perm filename PAGE22.PSC[WEB,ALS] blob sn#666048 filedate 1982-07-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00009 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	{899}{902}PROCEDURE MISSINGFONT
C00012 00003	{956}PROCEDURE PACKAGE(C:SMALLNUMBER)
C00025 00004	{1005}PROCEDURE DOENDV
C00045 00005	{1065}PROCEDURE RESUMEAFTERD
C00063 00006	{1134}PROCEDURE DOASSIGNMENT
C00077 00007	{1205}{1206}PROCEDURE NEWWHATSIT(S:SMALLNUMBER
C00104 00008	{1185}{1189}PROCEDURE CLOSEFILESAN
C00119 00009	{1196}{PROCEDURE DEBUGHELP
C00124 ENDMK
C⊗;
{899}{902}PROCEDURE MISSINGFONT;
BEGIN PRINTNL(692);
BEGIN HELPPTR:=4;
HELPLINE[3]:=693;
HELPLINE[2]:=694;
HELPLINE[1]:=695;
HELPLINE[0]:=696;
END;
ERROR;
END;
{912}PROCEDURE APPSPACE;
VAR P:HALFWORD;
Q:HALFWORD;
F:INTERNALFONT;
K:0..FONTMEMSIZE;
BEGIN IF(CURLIST.AUXFIELD>=2000)AND(EQTB[2373].HH.RH<>0)THEN Q:=
NEWPARAMGLUE(12)ELSE BEGIN IF EQTB[2372].HH.RH<>0 THEN P:=EQTB[2372].HH.
RH ELSE{911}BEGIN P:=FONTGLUE[EQTB[2893].HH.RH];
IF P=0 THEN BEGIN F:=EQTB[2893].HH.RH;
P:=NEWSPEC(0);
K:=PARAMBASE[F]+2;
MEM[P+1].INT:=FONTINFO[K].INT;
MEM[P+2].INT:=FONTINFO[K+1].INT;
MEM[P+3].INT:=FONTINFO[K+2].INT;
FONTGLUE[F]:=P;
END;
END;
P:=NEWSPEC(P);
{913}IF CURLIST.AUXFIELD>=2000 THEN MEM[P+1].INT:=MEM[P+1].INT+FONTINFO[
7+PARAMBASE[EQTB[2893].HH.RH]].INT;
MEM[P+2].INT:=XNOVERD(MEM[P+2].INT,CURLIST.AUXFIELD,1000);
MEM[P+3].INT:=XNOVERD(MEM[P+3].INT,1000,CURLIST.AUXFIELD);
Q:=NEWGLUE(P);
MEM[P].HH.RH:=0;
END;
MEM[CURLIST.TAILFIELD].HH.RH:=Q;
CURLIST.TAILFIELD:=Q;
END;
{918}PROCEDURE INSERTDOLLAR;
BEGIN PRINTNL(699);
BEGIN HELPPTR:=2;
HELPLINE[1]:=700;
HELPLINE[0]:=701;
END;
BACKERROR;
CURCMD:=3;
CURCHR:=36;
CURTOK:=804;
END;
{920}PROCEDURE YOUCANT;
BEGIN PRINTNL(702);
PRINTCMDCHR(CURCMD,CURCHR);
PRINT(703);
PRINTMODE(CURLIST.MODEFIELD);
END;
{921}PROCEDURE REPORTILLEGA;
BEGIN YOUCANT;
BEGIN HELPPTR:=4;
HELPLINE[3]:=704;
HELPLINE[2]:=705;
HELPLINE[1]:=706;
HELPLINE[0]:=707;
END;
ERROR;
END;
{922}FUNCTION PRIVILEGED:BOOLEAN;
BEGIN IF CURLIST.MODEFIELD>0 THEN PRIVILEGED:=TRUE ELSE BEGIN
REPORTILLEGA;
PRIVILEGED:=FALSE;
END;
END;
{929}PROCEDURE APPENDGLUE;
VAR S:SMALLNUMBER;
BEGIN S:=CURCHR;
CASE S OF 0:CURVAL:=4;
1:CURVAL:=8;
2:CURVAL:=12;
3:CURVAL:=16;
4:SCANGLUE(FALSE);
5:SCANGLUE(TRUE);
END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
IF S>=4 THEN BEGIN MEM[CURVAL].HH.RH:=MEM[CURVAL].HH.RH-1;
IF S>4 THEN MEM[CURLIST.TAILFIELD].HH.B1:=98;
END;
END;
{930}PROCEDURE APPENDKERN;
VAR S:QUARTERWORD;
BEGIN S:=CURCHR;
SCANDIMEN(S=98,FALSE,FALSE);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B1:=S;
END;
{933}PROCEDURE OFFSAVE;
VAR P:HALFWORD;
BEGIN IF CURGROUP=0 THEN{936}BEGIN PRINTNL(726);
PRINTCMDCHR(CURCMD,CURCHR);
BEGIN HELPPTR:=1;
HELPLINE[0]:=727;
END;
ERROR;
END ELSE BEGIN BACKINPUT;
P:=GETAVAIL;
MEM[12003].HH.RH:=P;
PRINTNL(718);
{935}CASE CURGROUP OF 15:BEGIN MEM[P].HH.LH:=6453;
PRINTESC(335);
END;
16:BEGIN MEM[P].HH.LH:=804;
PRINTCHAR(36);
END;
17:BEGIN MEM[P].HH.LH:=6454;
MEM[P].HH.RH:=GETAVAIL;
P:=MEM[P].HH.RH;
MEM[P].HH.LH:=3118;
PRINTESC(725);
END;
OTHERS:BEGIN MEM[P].HH.LH:=637;
PRINTCHAR(125);
END END;
PRINT(719);
BEGINTOKENLI(MEM[12003].HH.RH,3);
BEGIN HELPPTR:=5;
HELPLINE[4]:=720;
HELPLINE[3]:=721;
HELPLINE[2]:=722;
HELPLINE[1]:=723;
HELPLINE[0]:=724;
END;
ERROR;
END;
END;
{939}PROCEDURE EXTRARIGHTBR;
BEGIN PRINTNL(732);
CASE CURGROUP OF 15:PRINTESC(335);
16:PRINTCHAR(36);
17:PRINTESC(608);
END;
BEGIN HELPPTR:=5;
HELPLINE[4]:=733;
HELPLINE[3]:=734;
HELPLINE[2]:=735;
HELPLINE[1]:=736;
HELPLINE[0]:=737;
END;
ERROR;
ALIGNSTATE:=ALIGNSTATE+1;
END;
{945}PROCEDURE BOXEND;
VAR P:HALFWORD;
BEGIN IF SAVESTACK[SAVEPTR+0].INT<0 THEN{946}BEGIN IF CURBOX<>0 THEN
BEGIN MEM[CURBOX+4].INT:=SAVESTACK[SAVEPTR+0].INT;
IF ABS(CURLIST.MODEFIELD)=1 THEN BEGIN APPENDTOVLIS(CURBOX);
IF CURLIST.MODEFIELD>0 THEN BUILDPAGE;
END ELSE BEGIN IF ABS(CURLIST.MODEFIELD)=185 THEN BEGIN P:=NEWNOAD;
MEM[P+1].HH.RH:=2;
MEM[P+1].HH.LH:=CURBOX;
CURBOX:=P;
END;
MEM[CURLIST.TAILFIELD].HH.RH:=CURBOX;
CURLIST.TAILFIELD:=CURBOX;
END;
END;
END ELSE IF SAVESTACK[SAVEPTR+0].INT<1073742336 THEN{947}IF SAVESTACK[
SAVEPTR+0].INT<1073742080 THEN EQDEFINE(-1073739187+SAVESTACK[SAVEPTR+0]
.INT,100,CURBOX)ELSE GEQDEFINE(-1073739443+SAVESTACK[SAVEPTR+0].INT,100,
CURBOX)ELSE IF CURBOX<>0 THEN IF SAVESTACK[SAVEPTR+0].INT>1073742336
THEN{948}BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF((CURCMD=26)AND(ABS(CURLIST.MODEFIELD)<>1))OR((CURCMD=27)AND(ABS(
CURLIST.MODEFIELD)=1))THEN BEGIN APPENDGLUE;
MEM[CURLIST.TAILFIELD].HH.B1:=SAVESTACK[SAVEPTR+0].INT-1073741211;
MEM[CURLIST.TAILFIELD+1].HH.RH:=CURBOX;
END ELSE BEGIN PRINTNL(752);
BEGIN HELPPTR:=3;
HELPLINE[2]:=753;
HELPLINE[1]:=754;
HELPLINE[0]:=755;
END;
ERROR;
FLUSHNODELIS(CURBOX);
END;
END ELSE SHIPOUT(CURBOX);
END;
{949}PROCEDURE BEGINBOX;
LABEL 10;
VAR P:HALFWORD;
K:HALFWORD;
N:EIGHTBITS;
BEGIN CASE CURCHR OF 0:BEGIN SCANEIGHTBIT;
CURBOX:=EQTB[2637+CURVAL].HH.RH;
EQTB[2637+CURVAL].HH.RH:=0;
END;
1:BEGIN SCANEIGHTBIT;
CURBOX:=COPYNODELIST(EQTB[2637+CURVAL].HH.RH);
END;
2:{950}BEGIN CURBOX:=0;
IF(CURLIST.MODEFIELD=1)AND(CURLIST.HEADFIELD=CURLIST.TAILFIELD)THEN{951}
BEGIN YOUCANT;
BEGIN HELPPTR:=2;
HELPLINE[1]:=756;
HELPLINE[0]:=757;
END;
ERROR;
END ELSE BEGIN IF NOT(CURLIST.TAILFIELD>12000)THEN IF(MEM[CURLIST.
TAILFIELD].HH.B0=0)OR(MEM[CURLIST.TAILFIELD].HH.B0=1)THEN BEGIN P:=
CURLIST.HEADFIELD;
CURBOX:=CURLIST.TAILFIELD;
WHILE MEM[P].HH.RH<>CURLIST.TAILFIELD DO P:=MEM[P].HH.RH;
CURLIST.TAILFIELD:=P;
MEM[P].HH.RH:=0;
END;
END;
END;
3:{952}BEGIN SCANEIGHTBIT;
N:=CURVAL;
IF NOT SCANKEYWORD(576)THEN BEGIN PRINTNL(758);
BEGIN HELPPTR:=2;
HELPLINE[1]:=759;
HELPLINE[0]:=760;
END;
ERROR;
END;
SCANDIMEN(FALSE,FALSE,FALSE);
CURBOX:=VSPLIT(N,CURVAL);
END;
OTHERS:{953}BEGIN K:=CURCHR-4;
SAVEPTR:=SAVEPTR+1;
SCANSPEC;
IF K=93 THEN NEWSAVELEVEL(2)ELSE IF K=1 THEN NEWSAVELEVEL(3)ELSE BEGIN
NEWSAVELEVEL(4);
K:=1;
END;
PUSHNEST;
CURLIST.MODEFIELD:=-K;
IF K=1 THEN CURLIST.AUXFIELD:=-65536000 ELSE CURLIST.AUXFIELD:=1000;
END END;
BOXEND;
10:END;
{954}PROCEDURE SCANBOX;
BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF CURCMD=21 THEN BEGINBOX ELSE IF(SAVESTACK[SAVEPTR+0].INT>=1073742337)
AND((CURCMD=36)OR(CURCMD=35))THEN BEGIN CURBOX:=SCANRULESPEC;
BOXEND;
END ELSE BEGIN PRINTNL(761);
BEGIN HELPPTR:=3;
HELPLINE[2]:=762;
HELPLINE[1]:=763;
HELPLINE[0]:=764;
END;
BACKERROR;
END;
END;
{956}PROCEDURE PACKAGE(C:SMALLNUMBER);
VAR H:SCALED;
F:INTERNALFONT;
P:HALFWORD;
BEGIN UNSAVE;
SAVEPTR:=SAVEPTR-3;
IF CURLIST.MODEFIELD=-93 THEN CURBOX:=HPACK(MEM[CURLIST.HEADFIELD].HH.RH
,SAVESTACK[SAVEPTR+2].INT,SAVESTACK[SAVEPTR+1].INT)ELSE BEGIN CURBOX:=
VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+2].INT,SAVESTACK
[SAVEPTR+1].INT,134217727);
IF C=4 THEN{957}BEGIN H:=0;
P:=MEM[CURBOX+5].HH.RH;
IF P<>0 THEN IF(MEM[P].HH.B0=0)OR(MEM[P].HH.B0=1)OR(MEM[P].HH.B0=2)THEN
H:=MEM[P+3].INT;
MEM[CURBOX+2].INT:=MEM[CURBOX+2].INT-H+MEM[CURBOX+3].INT;
MEM[CURBOX+3].INT:=H;
END;
END;
POPNEST;
BOXEND;
END;
{962}PROCEDURE NEWGRAF(INDENTED:BOOLEAN);
BEGIN IF(CURLIST.MODEFIELD=1)OR(CURLIST.HEADFIELD<>CURLIST.TAILFIELD)
THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
PUSHNEST;
CURLIST.MODEFIELD:=93;
CURLIST.AUXFIELD:=1000;
IF INDENTED THEN BEGIN CURLIST.TAILFIELD:=NEWNULLBOX;
MEM[CURLIST.HEADFIELD].HH.RH:=CURLIST.TAILFIELD;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4004].INT;
END;
IF EQTB[2636].HH.RH<>0 THEN BEGIN IF CURCMD<>41 THEN BACKINPUT;
CURCMD:=0;
BEGINTOKENLI(EQTB[2636].HH.RH,6);
END;
IF NESTPTR=1 THEN BUILDPAGE;
END;
{964}PROCEDURE INDENTINHMOD;
BEGIN IF CURCHR>0 THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
NEWNULLBOX;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4004].INT;
END;
END;
{966}PROCEDURE ENDGRAF;
BEGIN IF CURLIST.MODEFIELD=93 THEN BEGIN IF CURLIST.HEADFIELD=CURLIST.
TAILFIELD THEN POPNEST ELSE LINEBREAK(EQTB[3588].INT);
IF EQTB[3602].INT<>0 THEN EQWORDDEFINE(3602,0);
IF EQTB[4021].INT<>0 THEN EQWORDDEFINE(4021,0);
IF EQTB[2634].HH.RH<>0 THEN EQDEFINE(2634,99,0);
ERRORCOUNT:=0;
END;
END;
{969}PROCEDURE BEGININSERTO;
BEGIN IF CURLIST.MODEFIELD<-1 THEN REPORTILLEGA ELSE BEGIN IF CURCMD=38
THEN CURVAL:=255 ELSE BEGIN SCANEIGHTBIT;
IF CURVAL=255 THEN BEGIN PRINTNL(767);
BEGIN HELPPTR:=1;
HELPLINE[0]:=768;
END;
ERROR;
CURVAL:=0;
END;
END;
SAVESTACK[SAVEPTR+0].INT:=CURVAL;
SAVEPTR:=SAVEPTR+1;
NEWSAVELEVEL(13);
SCANLEFTBRAC;
PUSHNEST;
CURLIST.MODEFIELD:=-1;
CURLIST.AUXFIELD:=-65536000;
END;
END;
{971}PROCEDURE MAKEMARK;
VAR P:HALFWORD;
BEGIN IF CURLIST.MODEFIELD<-1 THEN REPORTILLEGA ELSE BEGIN P:=SCANTOKS(
FALSE,TRUE);
P:=GETNODE(2);
MEM[P].HH.B0:=4;
MEM[P].HH.B1:=0;
MEM[P+1].INT:=CURVAL;
MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END;
END;
{973}PROCEDURE CHANGEAUX;
BEGIN IF CURCHR<>ABS(CURLIST.MODEFIELD)THEN REPORTILLEGA ELSE IF CURCHR=
1 THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
CURLIST.AUXFIELD:=CURVAL;
END ELSE BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>65536)THEN BEGIN PRINTNL(769);
BEGIN HELPPTR:=1;
HELPLINE[0]:=770;
END;
INTERROR(CURVAL);
END ELSE CURLIST.AUXFIELD:=CURVAL;
END;
END;
{975}PROCEDURE APPENDPENALT;
BEGIN SCANINT;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;
END;
{977}PROCEDURE DELETESKIP;
VAR P:HALFWORD;
BEGIN IF(CURLIST.MODEFIELD=1)AND(CURLIST.TAILFIELD=CURLIST.HEADFIELD)
THEN{978}BEGIN YOUCANT;
BEGIN HELPPTR:=2;
HELPLINE[1]:=756;
HELPLINE[0]:=771;
END;
ERROR;
END ELSE 
BEGIN IF NOT(CURLIST.TAILFIELD>12000)THEN 
IF MEM[CURLIST.TAILFIELD].HH.B0=9 THEN 
BEGIN P:=CURLIST.HEADFIELD;
WHILE MEM[P].HH.RH<>CURLIST.TAILFIELD DO P:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;
FLUSHNODELIS(CURLIST.TAILFIELD);
CURLIST.TAILFIELD:=P;
END;
END;
END;
{980}PROCEDURE UNPACKAGE;
VAR P:HALFWORD;
BEGIN SCANEIGHTBIT;
P:=EQTB[2637+CURVAL].HH.RH;
IF P<>0 THEN IF((ABS(CURLIST.MODEFIELD)=1)AND(MEM[P].HH.B0=1))OR((ABS(
CURLIST.MODEFIELD)=93)AND(MEM[P].HH.B0=0))THEN BEGIN MEM[CURLIST.
TAILFIELD].HH.RH:=MEM[P+5].HH.RH;
EQTB[2637+CURVAL].HH.RH:=0;
FREENODE(P,7);
WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 DO CURLIST.TAILFIELD:=MEM[CURLIST.
TAILFIELD].HH.RH;
END ELSE BEGIN PRINTNL(772);
BEGIN HELPPTR:=2;
HELPLINE[1]:=773;
HELPLINE[0]:=774;
END;
ERROR;
END;
END;
{983}PROCEDURE APPENDITALIC;
VAR F:INTERNALFONT;
BEGIN IF(CURLIST.TAILFIELD>12000)AND(CURLIST.TAILFIELD<>CURLIST.
HEADFIELD)THEN BEGIN F:=MEM[CURLIST.TAILFIELD].HH.B0;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[ITALICBASE[F]+(
FONTINFO[CHARBASE[F]+MEM[CURLIST.TAILFIELD].HH.B1].QQQQ.B2-0)DIV 4].INT)
;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
END;
END;
{987}PROCEDURE APPENDDISCRE;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
IF CURCHR=1 THEN 
MEM[CURLIST.TAILFIELD+1].HH.LH:=NEWCHARACTER(EQTB[2893].HH.RH,45)ELSE BEGIN 
SAVEPTR:=SAVEPTR+1;
SAVESTACK[SAVEPTR-1].INT:=0;
SCANLEFTBRAC;
NEWSAVELEVEL(12);
PUSHNEST;
CURLIST.MODEFIELD:=-93;
END;
END;
{989}PROCEDURE BUILDDISCRET;
LABEL 30,10;
VAR P,Q:HALFWORD;
N:INTEGER;
BEGIN UNSAVE;
{991}Q:=CURLIST.HEADFIELD;
P:=MEM[Q].HH.RH;
N:=0;
WHILE P<>0 DO 
BEGIN IF NOT(P>12000)THEN IF(MEM[P].HH.B0<>10)AND(MEM[P].HH.B0<>6)THEN 
BEGIN PRINTNL(778);
BEGINDIAGNOS;
SHOWBOX(P);
ENDDIAGNOSTI;
BEGIN HELPPTR:=1;
HELPLINE[0]:=779;
END;
ERROR;
FLUSHNODELIS(P);
MEM[Q].HH.RH:=0;
GOTO 30;
END;
Q:=P;
P:=MEM[Q].HH.RH;
N:=N+1;
END;
30:;
P:=MEM[CURLIST.HEADFIELD].HH.RH;
POPNEST;
CASE SAVESTACK[SAVEPTR-1].INT OF 
0:MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
1:MEM[CURLIST.TAILFIELD+1].HH.RH:=P;
2:{990}BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=P;
IF N<128 THEN MEM[CURLIST.TAILFIELD].HH.B1:=N ELSE BEGIN PRINTNL(775);
BEGIN HELPPTR:=2;
HELPLINE[1]:=776;
HELPLINE[0]:=777;
END;
ERROR;
END;
CURLIST.TAILFIELD:=Q;
SAVEPTR:=SAVEPTR-1;
GOTO 10;
END;
END;
SAVESTACK[SAVEPTR-1].INT:=SAVESTACK[SAVEPTR-1].INT+1;
SCANLEFTBRAC;
NEWSAVELEVEL(12);
PUSHNEST;
CURLIST.MODEFIELD:=-93;
10:END;
{993}PROCEDURE INSTHE;
BEGIN PRINTNL(780);
BEGIN HELPPTR:=3;
HELPLINE[2]:=781;
HELPLINE[1]:=782;
HELPLINE[0]:=783;
END;
BACKERROR;
MEM[12013].HH.RH:=THETOKS(FALSE);
BEGINTOKENLI(CURVAL,3);
END;
{996}PROCEDURE MAKEACCENT;
VAR S,T:REAL;
P,Q:HALFWORD;
F:INTERNALFONT;
A,H,X,W,DELTA:SCALED;
I:FOURQUARTERS;
BEGIN SCANCHARNUM;
F:=EQTB[2893].HH.RH;
P:=NEWCHARACTER(F,CURVAL);
IF P<>0 THEN BEGIN X:=FONTINFO[5+PARAMBASE[F]].INT;
S:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
A:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT;
DOASSIGNMENT;
{997}Q:=0;
F:=EQTB[2893].HH.RH;
IF(CURCMD=11)OR(CURCMD=12)THEN Q:=NEWCHARACTER(F,CURCHR)
ELSE IF CURCMD=16 THEN BEGIN SCANCHARNUM;
Q:=NEWCHARACTER(F,CURVAL);
END ELSE BACKINPUT;
IF Q<>0 THEN{998}BEGIN T:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
I:=FONTINFO[CHARBASE[F]+MEM[Q].HH.B1].QQQQ;
W:=FONTINFO[WIDTHBASE[F]+I.B0].INT;
H:=FONTINFO[HEIGHTBASE[F]+(I.B1-0)DIV 16].INT;
IF H<>X THEN BEGIN P:=HPACK(P,0,1);
MEM[P+4].INT:=X-H;
END;
DELTA:=ROUND((W-A)/2+H*T-X*S);
MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(DELTA);
MEM[MEM[CURLIST.TAILFIELD].HH.RH].HH.RH:=P;
MEM[P].HH.RH:=NEWKERN(-A-DELTA);
CURLIST.TAILFIELD:=MEM[P].HH.RH;
P:=Q;
END;
MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END;
END;
{1000}PROCEDURE ALIGNERROR;
BEGIN IF ABS(ALIGNSTATE)>2 THEN{1001}BEGIN PRINTNL(788);
BEGIN HELPPTR:=5;
HELPLINE[4]:=789;
HELPLINE[3]:=790;
HELPLINE[2]:=791;
HELPLINE[1]:=792;
HELPLINE[0]:=793;
END;
ERROR;
CURCMD:=0;
END ELSE BEGIN BACKINPUT;
IF ALIGNSTATE<0 THEN BEGIN PRINTNL(436);
CURCMD:=1;
ALIGNSTATE:=ALIGNSTATE+1;
CURTOK:=379;
END ELSE BEGIN PRINTNL(784);
CURCMD:=2;
ALIGNSTATE:=ALIGNSTATE-1;
CURTOK:=637;
END;
BEGIN HELPPTR:=3;
HELPLINE[2]:=785;
HELPLINE[1]:=786;
HELPLINE[0]:=787;
END;
ERROR;
END;
END;
{1002}PROCEDURE NOALIGNERROR;
BEGIN PRINTNL(794);
BEGIN HELPPTR:=2;
HELPLINE[1]:=795;
HELPLINE[0]:=796;
END;
ERROR;
END;
PROCEDURE OMITERROR;
BEGIN PRINTNL(797);
BEGIN HELPPTR:=2;
HELPLINE[1]:=798;
HELPLINE[0]:=796;
END;
ERROR;
END;
{1005}PROCEDURE DOENDV;
BEGIN IF CURGROUP=8 THEN BEGIN ENDGRAF;
UNSAVE;
NEWSAVELEVEL(8);
IF FINCOL THEN FINROW;
END ELSE OFFSAVE;
END;
{1008}PROCEDURE INITMATH;
LABEL 21,40,45,30,10;
VAR W:SCALED;
L:SCALED;
S:SCALED;
P:HALFWORD;
Q:HALFWORD;
F:INTERNALFONT;
N:INTEGER;
V:SCALED;
D:SCALED;
BEGIN{1010}IF(FONTPARAMS[EQTB[2896].HH.RH]<22)
OR(FONTPARAMS[EQTB[2912].HH.RH]<22)
OR(FONTPARAMS[EQTB[2928].HH.RH]<22)
OR(FONTPARAMS[EQTB[2897].HH.RH]<13)THEN BEGIN PRINTNL(799);
BEGIN HELPPTR:=4;
HELPLINE[3]:=800;
HELPLINE[2]:=801;
HELPLINE[1]:=802;
HELPLINE[0]:=803;
END;
ERROR;
GOTO 10;
END;
GETNCTOKEN;
IF(CURCMD=3)AND(CURLIST.MODEFIELD>0)THEN
{1016}BEGIN IF CURLIST.HEADFIELD=CURLIST.TAILFIELD THEN BEGIN POPNEST;
W:=-134217727;
END ELSE BEGIN LINEBREAK(EQTB[3589].INT);
{1017}V:=
MEM[JUSTBOX+4].INT+2*FONTINFO[6+PARAMBASE[EQTB[2893].HH.RH]].INT;
W:=-134217727;
P:=MEM[JUSTBOX+5].HH.RH;
WHILE P<>0 DO BEGIN{1018}21:IF(P>12000)THEN BEGIN F:=MEM[P].HH.B0;
D:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT;
GOTO 40;
END;
CASE MEM[P].HH.B0 OF 0,1,2:BEGIN D:=MEM[P+1].INT;
GOTO 40;
END;
6:{558}BEGIN MEM[12012]:=MEM[P+1];
MEM[12012].HH.RH:=MEM[P].HH.RH;
P:=12012;
GOTO 21;
END;
10,11:D:=MEM[P+1].INT;
9:{1019}BEGIN Q:=MEM[P+1].HH.LH;
D:=MEM[Q+1].INT;
IF((MEM[JUSTBOX+5].HH.B0=1)AND(MEM[JUSTBOX+5].HH.B1=MEM[Q].HH.B0))
OR((MEM[JUSTBOX+5].HH.B0=2)AND(MEM[JUSTBOX+5].HH.B1=MEM[Q].HH.B1))
THEN V:=134217727;
IF MEM[P].HH.B1>=100 THEN GOTO 40;
END;
8:{1218}D:=0;
OTHERS:D:=0 END;
IF V<134217727 THEN V:=V+D;
GOTO 45;
40:IF V<134217727 THEN BEGIN V:=V+D;
W:=V;
END ELSE BEGIN W:=134217727;
GOTO 30;
END;
45:P:=MEM[P].HH.RH;
END;
30:;
END;
{1020}IF EQTB[2634].HH.RH=0 THEN IF(EQTB[4021].INT<>0)
AND(((EQTB[3619].INT>=0)AND(CURLIST.ALREADYFIELD+2>EQTB[3619].INT))
OR(CURLIST.ALREADYFIELD+1<-EQTB[3619].INT))THEN 
BEGIN L:=EQTB[4008].INT-ABS(EQTB[4021].INT);
IF EQTB[4021].INT>0 THEN S:=EQTB[4021].INT ELSE S:=0;
END ELSE BEGIN L:=EQTB[4008].INT;
S:=0;
END ELSE BEGIN N:=MEM[EQTB[2634].HH.RH].HH.LH;
IF CURLIST.ALREADYFIELD+2>=N THEN P:=EQTB[2634].HH.RH+2*N 
ELSE P:=EQTB[2634].HH.RH+2*(CURLIST.ALREADYFIELD+2);
S:=MEM[P-1].INT;
L:=MEM[P].INT;
END;
PUSHNEST;
CURLIST.MODEFIELD:=185;
CURLIST.AUXFIELD:=0;
NEWSAVELEVEL(16);
EQDEFINE(2942,101,1);
EQWORDDEFINE(2374,W);
EQWORDDEFINE(2375,L);
EQWORDDEFINE(2376,S);
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;
END ELSE BEGIN BACKINPUT;
{1009}BEGIN PUSHNEST;
CURLIST.MODEFIELD:=-185;
CURLIST.AUXFIELD:=0;
NEWSAVELEVEL(16);
EQDEFINE(2942,101,1);
END;
END;
10:END;
{1013}PROCEDURE STARTEQNO;
BEGIN IF CURGROUP=16 THEN BEGIN SAVESTACK[SAVEPTR+0].INT:=CURCHR;
SAVEPTR:=SAVEPTR+1;
{1009}BEGIN PUSHNEST;
CURLIST.MODEFIELD:=-185;
CURLIST.AUXFIELD:=0;
NEWSAVELEVEL(16);
EQDEFINE(2942,101,1);
END;
END ELSE OFFSAVE;
END;
{1022}PROCEDURE SCANMATH(P:HALFWORD);
LABEL 10;
VAR C:INTEGER;
BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
CASE CURCMD OF 11,12:C:=EQTB[3071+CURCHR].HH.RH;
16:BEGIN SCANCHARNUM;
C:=CURVAL+28672;
END;
17:BEGIN SCANFIFTEENB;
C:=CURVAL;
END;
15:BEGIN SCANTWENTYSE;
C:=CURVAL DIV 4096;
END;
OTHERS:{1023}BEGIN BACKINPUT;
SCANLEFTBRAC;
SAVESTACK[SAVEPTR+0].INT:=P;
SAVEPTR:=SAVEPTR+1;
NEWSAVELEVEL(11);
PUSHNEST;
CURLIST.AUXFIELD:=0;
END END;
MEM[P].HH.RH:=1;
MEM[P].HH.B1:=C MOD 256;
IF C>=28672 THEN MEM[P].HH.B0:=EQTB[2942].HH.RH 
ELSE MEM[P].HH.B0:=(CDIV 256)MOD 16;
GOTO 10;
10:END;
{1025}PROCEDURE SETMATHCHAR(C:INTEGER);
VAR P:HALFWORD;
BEGIN P:=NEWNOAD;
MEM[P+1].HH.RH:=1;
MEM[P+1].HH.B1:=C MOD 256;
IF C>=28672 THEN BEGIN MEM[P+1].HH.B0:=EQTB[2942].HH.RH;
MEM[P].HH.B0:=15;
END ELSE BEGIN MEM[P+1].HH.B0:=(C DIV 256)MOD 16;
MEM[P].HH.B0:=15+(C DIV 4096);
END;
MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END;
{1029}PROCEDURE MATHLIMITSWI;
LABEL 10;
BEGIN IF CURLIST.HEADFIELD<>CURLIST.TAILFIELD THEN 
IF MEM[CURLIST.TAILFIELD].HH.B0=16 THEN 
BEGIN MEM[CURLIST.TAILFIELD].HH.B1:=1-MEM[CURLIST.TAILFIELD].HH.B1;
GOTO 10;
END;
PRINTNL(806);
BEGIN HELPPTR:=1;
HELPLINE[0]:=807;
END;
10:END;
{1030}PROCEDURE SCANDELIMITE(P:HALFWORD;
R:BOOLEAN);
BEGIN IF R THEN SCANTWENTYSE ELSE BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
CASE CURCMD OF 11,12:CURVAL:=EQTB[3876+CURCHR].INT;
15:SCANTWENTYSE;
OTHERS:CURVAL:=-1 END;
END;
IF CURVAL<0 THEN{1031}BEGIN PRINTNL(808);
BEGIN HELPPTR:=6;
HELPLINE[5]:=809;
HELPLINE[4]:=810;
HELPLINE[3]:=811;
HELPLINE[2]:=812;
HELPLINE[1]:=813;
HELPLINE[0]:=814;
END;
BACKERROR;
CURVAL:=0;
END;
MEM[P].QQQQ.B0:=(CURVAL DIV 1048576)MOD 16;
MEM[P].QQQQ.B1:=(CURVAL DIV 4096)MOD 256;
MEM[P].QQQQ.B2:=(CURVAL DIV 256)MOD 16;
MEM[P].QQQQ.B3:=CURVAL MOD 256;
END;
{1033}PROCEDURE MATHRADICAL;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B0:=23;
MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
SCANDELIMITE(CURLIST.TAILFIELD+4,TRUE);
SCANMATH(CURLIST.TAILFIELD+1);
END;
{1035}PROCEDURE MATHAC;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B0:=27;
MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+4].HH.RH:=1;
SCANFIFTEENB;
MEM[CURLIST.TAILFIELD+4].HH.B1:=CURVAL MOD 256;
IF CURVAL>=28672 THEN MEM[CURLIST.TAILFIELD+4].HH.B0:=EQTB[2942].HH.RH
ELSE MEM[CURLIST.TAILFIELD+4].HH.B0:=(CURVAL DIV 256)MOD 16;
SCANMATH(CURLIST.TAILFIELD+1);
END;
{1041}PROCEDURE MATHNONSCRIP;
BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF(CURCMD>30)OR(CURCMD<26)THEN BEGIN PRINTNL(815);
BEGIN HELPPTR:=2;
HELPLINE[1]:=816;
HELPLINE[0]:=817;
END;
BACKERROR;
END ELSE BEGIN BACKINPUT;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(0);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
DELETEGLUERE(0);
MEM[CURLIST.TAILFIELD].HH.B1:=99;
END;
END;
{1043}PROCEDURE SUBSUP;
VAR T:SMALLNUMBER;
P:HALFWORD;
BEGIN T:=0;
P:=0;
IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD 
THEN IF(MEM[CURLIST.TAILFIELD].HH.B0>=15)
AND(MEM[CURLIST.TAILFIELD].HH.B0<29)THEN 
BEGIN P:=CURLIST.TAILFIELD+2+CURCMD-7;
T:=MEM[P].HH.RH;
END;
IF(P=0)OR(T<>0)THEN{1044}
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B0:=15;
P:=CURLIST.TAILFIELD+2+CURCMD-7;
IF T<>0 THEN BEGIN IF CURCMD=7 THEN BEGIN PRINTNL(818);
BEGIN HELPPTR:=1;
HELPLINE[0]:=819;
END;
END ELSE BEGIN PRINTNL(820);
BEGIN HELPPTR:=1;
HELPLINE[0]:=821;
END;
END;
ERROR;
END;
END;
SCANMATH(P);
END;
{1048}PROCEDURE MATHFRACTION;
VAR C:SMALLNUMBER;
BEGIN C:=CURCHR;
IF CURLIST.AUXFIELD<>0 THEN{1050}
BEGIN IF C MOD 3=0 THEN SCANDIMEN(FALSE,FALSE,FALSE);
IF C>=3 THEN BEGIN SCANDELIMITE(12013,FALSE);
SCANDELIMITE(12013,FALSE);
END;
PRINTNL(827);
BEGIN HELPPTR:=3;
HELPLINE[2]:=828;
HELPLINE[1]:=829;
HELPLINE[0]:=830;
END;
ERROR;
END ELSE BEGIN CURLIST.AUXFIELD:=GETNODE(6);
MEM[CURLIST.AUXFIELD].HH.B0:=24;
MEM[CURLIST.AUXFIELD].HH.B1:=0;
MEM[CURLIST.AUXFIELD+2].HH.RH:=3;
MEM[CURLIST.AUXFIELD+2].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
MEM[CURLIST.AUXFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.AUXFIELD+4].QQQQ:=NULLCHARACTE;
MEM[CURLIST.AUXFIELD+5].QQQQ:=NULLCHARACTE;
MEM[CURLIST.HEADFIELD].HH.RH:=0;
CURLIST.TAILFIELD:=CURLIST.HEADFIELD;
{1049}CASE C MOD 3 OF 0:BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[CURLIST.AUXFIELD+1].INT:=CURVAL;
END;
1:MEM[CURLIST.AUXFIELD+1].INT:=1073741824;
2:MEM[CURLIST.AUXFIELD+1].INT:=0;
END;
IF C>=3 THEN BEGIN SCANDELIMITE(CURLIST.AUXFIELD+4,FALSE);
SCANDELIMITE(CURLIST.AUXFIELD+5,FALSE);
END;
END;
END;
{1051}FUNCTION FINMLIST(P:HALFWORD):HALFWORD;
VAR Q:HALFWORD;
BEGIN IF CURLIST.AUXFIELD<>0 THEN
{1052}BEGIN MEM[CURLIST.AUXFIELD+3].HH.RH:=3;
MEM[CURLIST.AUXFIELD+3].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
IF P=0 THEN Q:=CURLIST.AUXFIELD ELSE 
BEGIN Q:=MEM[CURLIST.AUXFIELD+2].HH.LH;
IF MEM[Q].HH.B0<>29 THEN CONFUSION(608);
MEM[CURLIST.AUXFIELD+2].HH.LH:=MEM[Q].HH.RH;
MEM[Q].HH.RH:=CURLIST.AUXFIELD;
MEM[CURLIST.AUXFIELD].HH.RH:=P;
END;
END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=P;
Q:=MEM[CURLIST.HEADFIELD].HH.RH;
END;
POPNEST;
FINMLIST:=Q;
END;
{1057}PROCEDURE MATHLEFTRIGH;
VAR T:SMALLNUMBER;
P:HALFWORD;
BEGIN T:=CURCHR;
IF(T=30)AND(CURGROUP<>17)THEN{1058}BEGIN IF CURGROUP=16 THEN BEGIN
SCANDELIMITE(12013,FALSE);
PRINTNL(831);
BEGIN HELPPTR:=1;
HELPLINE[0]:=832;
END;
ERROR;
END ELSE OFFSAVE;
END ELSE BEGIN P:=NEWNOAD;
MEM[P].HH.B0:=T;
SCANDELIMITE(P+1,FALSE);
IF T=29 THEN BEGIN PUSHNEST;
NEWSAVELEVEL(17);
MEM[CURLIST.HEADFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END ELSE BEGIN P:=FINMLIST(P);
UNSAVE;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD+1].HH.RH:=3;
MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
END;
END;
END;
{1060}PROCEDURE FINMATH;
VAR L:BOOLEAN;
M:INTEGER;
P:HALFWORD;
A:HALFWORD;
{1063}B:HALFWORD;
W:SCALED;
Z:SCALED;
E:SCALED;
Q:SCALED;
D:SCALED;
S:SCALED;
G1,G2:SMALLNUMBER;
R:HALFWORD;
BEGIN M:=CURLIST.MODEFIELD;
L:=FALSE;
P:=FINMLIST(0);
IF CURLIST.MODEFIELD=-M THEN BEGIN A:=HPACK(MLISTTOHLIST(P,2,FALSE),0,1);
UNSAVE;SAVEPTR:=SAVEPTR-1;
IF SAVESTACK[SAVEPTR+0].INT=1 THEN L:=TRUE;
M:=CURLIST.MODEFIELD;
P:=FINMLIST(0);
END ELSE A:=0;
IF M<0 THEN{1061}BEGIN 
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB[4005].INT,0);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.RH:=MLISTTOHLIST(P,2,TRUE);
WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 
DO CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB[4005].INT,1);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
CURLIST.AUXFIELD:=1000;
UNSAVE;
END ELSE BEGIN{1062}BEGIN GETNCTOKEN;
IF CURCMD<>3 THEN BEGIN PRINTNL(833);
BEGIN HELPPTR:=2;
HELPLINE[1]:=834;
HELPLINE[0]:=835;
END;
BACKERROR;
END;
END;
{1064}P:=MLISTTOHLIST(P,0,FALSE);
B:=HPACK(P,0,1);
W:=MEM[B+1].INT;
Z:=EQTB[4018].INT;
S:=EQTB[4019].INT;
IF A=0 THEN BEGIN E:=0;
Q:=0;
END ELSE BEGIN E:=MEM[A+1].INT;
Q:=E+FONTINFO[6+PARAMBASE[EQTB[2896].HH.RH]].INT;
END;
IF W+Q>Z THEN
{1066}BEGIN IF(E<>0)AND((W-TOTALSHRINK[0]+Q<=Z)OR(TOTALSHRINK[1]<>0)
OR(TOTALSHRINK[2]<>0)OR(TOTALSHRINK[3]<>0))THEN 
BEGIN FREENODE(B,7);
B:=HPACK(P,Z-Q,0);
END ELSE BEGIN E:=0;
IF W>Z THEN BEGIN FREENODE(B,7);
B:=HPACK(P,Z,0);
END;
END;
W:=MEM[B+1].INT;
END;
{1067}D:=HALF(Z-W);
IF(E>0)AND(D<2*E)THEN BEGIN D:=HALF(Z-W-E);
IF P<>0 THEN IF MEM[P].HH.B0=9 THEN D:=0;
END;
{1068}BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3594].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
IF(D+S<=EQTB[4017].INT)OR L THEN BEGIN G1:=3;
G2:=3;
END ELSE BEGIN G1:=4;
G2:=5;
END;
IF L AND(E=0)THEN BEGIN MEM[A+4].INT:=S;
APPENDTOVLIS(A);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G1);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
{1069}IF E<>0 THEN BEGIN P:=NEWKERN(Z-W-E-D);
IF L THEN BEGIN MEM[A].HH.RH:=R;
MEM[R].HH.RH:=B;
B:=A;
D:=0;
END ELSE BEGIN MEM[B].HH.RH:=R;
MEM[R].HH.RH:=A;
END;
END;
MEM[B+4].INT:=S+D;
APPENDTOVLIS(B);
{1070}IF(A<>0)AND(E=0)AND NOT L THEN BEGIN 
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[A+4].INT:=S+Z-MEM[A+1].INT;
APPENDTOVLIS(A);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3593].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
END ELSE BEGIN 
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[3593].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
END;
RESUMEAFTERD;
END;
END;
{1065}PROCEDURE RESUMEAFTERD;
BEGIN IF CURGROUP<>16 THEN CONFUSION(836);
UNSAVE;
CURLIST.ALREADYFIELD:=CURLIST.ALREADYFIELD+3;
PUSHNEST;
CURLIST.MODEFIELD:=93;
CURLIST.AUXFIELD:=1000;
{365}BEGIN GETNCTOKEN;
IF CURCMD<>10 THEN BACKINPUT;
END;
IF NESTPTR=1 THEN BUILDPAGE;
END;
{1076}PROCEDURE CONDITIONAL;
LABEL 10;
VAR B:BOOLEAN;
R:60..62;
N:INTEGER;
C:1..2;
P,Q:HALFWORD;
BEGIN CASE CURCHR OF 0:{1080}BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF(CURTOK>=3328)OR(CURCMD=9)THEN N:=256 ELSE BEGIN N:=CURCHR;
{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF(CURTOK>=3328)OR(CURCMD=9)THEN N:=256;
END;
IF N<256 THEN B:=(N=CURCHR)ELSE BEGIN PRINTNL(851);
BEGIN HELPPTR:=2;
HELPLINE[1]:=852;
HELPLINE[0]:=853;
END;
BACKERROR;
GOTO 10;
END;
END;
1,2:{1077}BEGIN C:=CURCHR;
IF C=1 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE);
N:=CURVAL;
{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF(CURTOK>=3132)AND(CURTOK<=3134)THEN R:=CURTOK-3072 ELSE 
BEGIN PRINTNL(849);
PRINTCMDCHR(55,C);
BEGIN HELPPTR:=1;
HELPLINE[0]:=850;
END;
BACKERROR;
R:=61;
END;
IF C=1 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE);
CASE R OF 60:B:=(N<CURVAL);
61:B:=(N=CURVAL);
62:B:=(N>CURVAL);
END;
END;
3:{1078}BEGIN SCANEIGHTBIT;
B:=NOT ODD(EQTB[3620+CURVAL].INT);
END;
4:B:=(ABS(CURLIST.MODEFIELD)=1);
5:B:=(ABS(CURLIST.MODEFIELD)=93);
6:B:=(ABS(CURLIST.MODEFIELD)=185);
7:B:=(CURLIST.MODEFIELD<0);
8:{1079}BEGIN SCANEIGHTBIT;
B:=(EQTB[2637+CURVAL].HH.RH=0);
END;
9:{1081}BEGIN GETTOKEN;
N:=CSPTR;
IF N<>0 THEN GETTOKEN;
IF CSPTR<>0 THEN BEGIN IF CURCMD<>EQTB[N].HH.B0 THEN B:=FALSE 
ELSE IF CURCMD<94 THEN B:=(CURCHR=EQTB[N].HH.RH)
ELSE{1082}BEGIN P:=MEM[CURCMD].HH.RH;
Q:=MEM[EQTB[N].HH.RH].HH.RH;
WHILE(P<>0)AND(Q<>0)DO IF MEM[P].HH.LH<>MEM[Q].HH.LH THEN P:=0 ELSE
BEGIN P:=MEM[P].HH.RH;
Q:=MEM[Q].HH.RH;
END;
B:=((P=0)AND(Q=0));
END;
END ELSE BEGIN PRINTNL(854);
BEGIN HELPPTR:=2;
HELPLINE[1]:=855;
HELPLINE[0]:=853;
END;
BACKERROR;
GOTO 10;
END;
END;
END;
{1083}IF B THEN BEGIN SCANLEFTBRAC;
NEWSAVELEVEL(5);
CURLEVEL:=CURLEVEL-1;
END ELSE BEGIN PASSBLOCK(0);
{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF CURCMD=57 THEN BEGIN SCANLEFTBRAC;
NEWSAVELEVEL(6);
CURLEVEL:=CURLEVEL-1;
END ELSE BEGIN PRINTNL(856);
BEGIN HELPPTR:=3;
HELPLINE[2]:=857;
HELPLINE[1]:=858;
HELPLINE[0]:=859;
END;
BACKERROR;
END;
END;
10:END;
{1086}PROCEDURE SPURIOUSELSE;
BEGIN PRINTNL(861);
BEGIN HELPPTR:=2;
HELPLINE[1]:=862;
HELPLINE[0]:=863;
END;
ERROR;
END;
{1087}PROCEDURE CASECONDITIO;
LABEL 10,30;
VAR N:INTEGER;
BEGIN SCANINT;
N:=CURVAL;
WHILE N<>0 DO BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF CURCMD<>1 THEN IF CURCMD=57 THEN GOTO 30 ELSE
{1089}BEGIN PRINTNL(864);
BEGIN HELPPTR:=3;
HELPLINE[2]:=865;
HELPLINE[1]:=866;
HELPLINE[0]:=859;
END;
BACKERROR;
GOTO 10;
END;
PASSBLOCK(1);
N:=N-1;
END;
30:SCANLEFTBRAC;
IF N=0 THEN NEWSAVELEVEL(7)ELSE NEWSAVELEVEL(6);
CURLEVEL:=CURLEVEL-1;
10:END;
{1093}{1125}PROCEDURE NEWFONT;
LABEL 21,10;
VAR U:0..BADFONTCODE;
S:SCALED;
N:STRNUMBER;
F:INTERNALFONT;
BEGIN SCANFONTNUMB;
U:=CURVAL;
SCANOPTIONAL;
21:SCANFILENAME;
{1126}IF SCANKEYWORD(928)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
S:=CURVAL;
IF(S<=0)OR(S>=134217728)THEN BEGIN PRINTNL(929);
BEGIN HELPPTR:=2;
HELPLINE[1]:=930;
HELPLINE[0]:=931;
END;
ERROR;
S:=10*65536;
END;
END ELSE S:=0;
IF U=BADFONTCODE THEN GOTO 10;
{1127}IF FONTNUMBER[U]<>0 THEN BEGIN F:=FONTNUMBER[U];
IF((S=0)AND FONTSCALED[F])OR((S<>0)AND(S<>FONTSIZE[F]))
OR NOT STREQSTR(FONTNAME[F],CURNAME)
OR NOT STREQSTR(FONTAREA[F],CURAREA)THEN
{1128}BEGIN PRINTNL(543);
PRINTINT(U);
PRINT(932);
PRINT(FONTNAME[F]);
IF FONTSCALED[F]THEN BEGIN PRINT(544);
PRINTSCALED(FONTSIZE[F]);
PRINT(482);
END;
BEGIN HELPPTR:=2;
HELPLINE[1]:=933;
HELPLINE[0]:=934;
END;
ERROR;
END;
GOTO 10;
END;
{1129}FOR F:=1 TO FONTPTR DO IF STREQSTR(FONTNAME[F],CURNAME)AND
STREQSTR(FONTAREA[F],CURAREA)AND((S=0)
AND NOT FONTSCALED[F])OR((S<>0)AND(S=FONTSIZE[F]))THEN 
BEGIN FONTNUMBER[U]:=F;
FONTCODE[F]:=U;
GOTO 10;
END;;
READFONTINFO(U,CURNAME,CURAREA,S);
10:END;
{1133}PROCEDURE NEWINTERACTI;
BEGIN PRINTLN;
INTERACTION:=CURCHR;
{71}IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17;
IF JOBNAME<>0 THEN SELECTOR:=SELECTOR+2;
END;
PROCEDURE PREFIXEDCOMM;
LABEL 10;
VAR A:SMALLNUMBER;
J:HALFWORD;
K:0..FONTMEMSIZE;
P,Q,R:HALFWORD;
N:INTEGER;
E:BOOLEAN;
BEGIN A:=0;
WHILE CURCMD=80 DO BEGIN IF NOT ODD(A DIV CURCHR)THEN A:=A+CURCHR;
{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF CURCMD<80 THEN{1094}BEGIN PRINTNL(875);
PRINTCMDCHR(CURCMD,CURCHR);
PRINTCHAR(39);
BEGIN HELPPTR:=1;
HELPLINE[0]:=876;
END;
BACKERROR;
GOTO 10;
END;
END;
{1095}IF(CURCMD<>82)AND(A MOD 4<>0)THEN BEGIN PRINTNL(877);
PRINTCMDCHR(CURCMD,CURCHR);
PRINTCHAR(39);
BEGIN HELPPTR:=1;
HELPLINE[0]:=878;
END;
ERROR;
END;
CASE CURCMD OF{1097}78:BEGIN SCANFONTNUMB;
IF(A>=4)THEN GEQDEFINE(2893,101,CURVAL)ELSE EQDEFINE(2893,101,CURVAL);
END;
79:BEGIN SCANFOURBITI;
IF(A>=4)THEN GEQDEFINE(2942,101,CURVAL)ELSE EQDEFINE(2942,101,CURVAL);
END;
{1098}82:BEGIN IF ODD(CURCHR)AND NOT(A>=4)THEN A:=A+4;
E:=(CURCHR>=2);
GETTOKEN;
IF CURTOK<4096 THEN{1099}BEGIN PRINTNL(879);
BEGIN HELPPTR:=4;
HELPLINE[3]:=880;
HELPLINE[2]:=881;
HELPLINE[1]:=882;
HELPLINE[0]:=883;
END;
BACKERROR;
END ELSE BEGIN P:=CSPTR;
Q:=SCANTOKS(TRUE,E);
IF(A>=4)THEN GEQDEFINE(P,94+(A MOD 4),CURVAL)ELSE EQDEFINE(P,94+(A MOD 4
),CURVAL);
END;
END;
{1100}81:BEGIN E:=TRUE;
{1101}GETTOKEN;
IF CSPTR<>0 THEN BEGIN P:=CSPTR;
REPEAT GETTOKEN;
UNTIL(CURCMD<>10)AND(CURTOK<>3133);
IF CURTOK>=4096 THEN BEGIN E:=FALSE;
IF CURCMD>=94 THEN MEM[CURCHR].HH.LH:=MEM[CURCHR].HH.LH+1;
IF(A>=4)THEN GEQDEFINE(P,CURCMD,CURCHR)ELSE EQDEFINE(P,CURCMD,CURCHR);
END;
END;
IF E THEN BEGIN PRINTNL(884);
BEGIN HELPPTR:=2;
HELPLINE[1]:=885;
HELPLINE[0]:=886;
END;
BACKERROR;
END;
END;
{1102}70:BEGIN P:=CURCHR;
SCANOPTIONAL;
Q:=SCANTOKS(FALSE,FALSE);
IF MEM[CURVAL].HH.RH=0 THEN IF(A>=4)THEN GEQDEFINE(P,92,0)
ELSE EQDEFINE(P,92,0)ELSE BEGIN IF P=2635 THEN 
BEGIN MEM[Q].HH.RH:=GETAVAIL;
Q:=MEM[Q].HH.RH;
MEM[Q].HH.LH:=637;
Q:=GETAVAIL;
MEM[Q].HH.LH:=379;
MEM[Q].HH.RH:=MEM[CURVAL].HH.RH;
MEM[CURVAL].HH.RH:=Q;
END;
IF(A>=4)THEN GEQDEFINE(P,94,CURVAL)ELSE EQDEFINE(P,94,CURVAL);
END;
END;
{1103}71:BEGIN P:=CURCHR;
SCANOPTIONAL;
SCANINT;
IF(A>=4)THEN GEQWORDDEFIN(3583+P,CURVAL)ELSE EQWORDDEFINE(3583+P,CURVAL);
END;
72:BEGIN P:=CURCHR;
SCANOPTIONAL;
SCANDIMEN(FALSE,FALSE,FALSE);
IF(A>=4)THEN GEQWORDDEFIN(4004+P,CURVAL)ELSE EQWORDDEFINE(4004+P,CURVAL)
;
END;
73:BEGIN P:=CURCHR;
SCANOPTIONAL;
SCANGLUE(P>=14);
IF(MEM[CURVAL+1].INT=0)AND(MEM[CURVAL+2].INT=0)AND(MEM[CURVAL+3].INT=0)
THEN BEGIN MEM[0].HH.RH:=MEM[0].HH.RH+1;
DELETEGLUERE(CURVAL);
CURVAL:=0;
END;
IF(A>=4)THEN GEQDEFINE(2361+P,98,CURVAL)ELSE EQDEFINE(2361+P,98,CURVAL);
END;
{1104}75:BEGIN SCANOPTIONAL;
SCANDIMEN(FALSE,FALSE,FALSE);
IF(A>=4)THEN GEQWORDDEFIN(4021,CURVAL)ELSE EQWORDDEFINE(4021,CURVAL);
N:=1;
IF SCANKEYWORD(887)THEN BEGIN SCANINT;
N:=CURVAL;
END ELSE IF SCANKEYWORD(888)THEN BEGIN SCANINT;
N:=-CURVAL;
IF N=0 THEN EQTB[4021].INT:=0;
END ELSE N:=1;
IF(A>=4)THEN GEQWORDDEFIN(3619,N)ELSE EQWORDDEFINE(3619,N);
END;
{1107}76:BEGIN{1108}IF CURCHR=2943 THEN N:=15 ELSE IF CURCHR=3071 THEN N
:=32767 ELSE IF CURCHR=3455 THEN N:=65536 ELSE IF CURCHR=3876 THEN N:=
16777215 ELSE N:=127;
P:=CURCHR;
SCANSEVENBIT;
P:=P+CURVAL;
SCANOPTIONAL;
SCANINT;
IF((CURVAL<0)AND(P<3876))OR(CURVAL>N)THEN BEGIN PRINTNL(895);
PRINTINT(CURVAL);
IF P<3876 THEN PRINT(896)ELSE PRINT(897);
PRINTINT(N);
BEGIN HELPPTR:=1;
HELPLINE[0]:=898;
END;
ERROR;
CURVAL:=0;
END;
IF P<3876 THEN IF(A>=4)THEN GEQDEFINE(P,101,CURVAL)ELSE EQDEFINE(P,101,
CURVAL)ELSE IF(A>=4)THEN GEQWORDDEFIN(P,CURVAL)ELSE EQWORDDEFINE(P,
CURVAL);
END;
{1109}77:BEGIN P:=CURCHR;
SCANFOURBITI;
P:=P+CURVAL;
SCANOPTIONAL;
SCANINT;
IF(CURVAL>=BADFONTCODE)OR(CURVAL<0)THEN N:=0 ELSE N:=FONTNUMBER[CURVAL];
IF N=0 THEN BEGIN PRINTNL(899);
PRINTINT(CURVAL);
PRINT(900);
BEGIN HELPPTR:=1;
HELPLINE[0]:=901;
END;
ERROR;
END ELSE IF(A>=4)THEN GEQDEFINE(P,101,N)ELSE EQDEFINE(P,101,N);
END;
{1112}84,85,86,87:BEGIN P:=CURCHR;
Q:=CURCMD;
SCANEIGHTBIT;
N:=CURVAL;
IF Q=84 THEN SCANOPTIONAL ELSE{1113}IF NOT SCANKEYWORD(921)THEN BEGIN
PRINTNL(922);
BEGIN HELPPTR:=2;
HELPLINE[1]:=923;
HELPLINE[0]:=924;
END;
ERROR;
GOTO 10;
END;
ARITHERROR:=FALSE;
IF Q<86 THEN{1114}CASE P OF 0:BEGIN SCANINT;
IF Q=85 THEN CURVAL:=CURVAL+EQTB[3620+N].INT;
END;
1:BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
IF Q=85 THEN CURVAL:=CURVAL+EQTB[4022+N].INT;
END;
2:BEGIN SCANGLUE(FALSE);
IF Q=85 THEN{1115}BEGIN Q:=NEWSPEC(CURVAL);
R:=EQTB[2378+N].HH.RH;
DELETEGLUERE(CURVAL);
MEM[Q+1].INT:=MEM[Q+1].INT+MEM[R+1].INT;
IF MEM[Q+2].INT=0 THEN MEM[Q].HH.B0:=0;
IF MEM[Q].HH.B0=MEM[R].HH.B0 THEN MEM[Q+2].INT:=MEM[Q+2].INT+MEM[R+2].
INT ELSE IF(MEM[Q].HH.B0<MEM[R].HH.B0)AND(MEM[R+2].INT<>0)THEN BEGIN MEM
[Q+2].INT:=MEM[R+2].INT;
MEM[Q].HH.B0:=MEM[R].HH.B0;
END;
IF MEM[Q+3].INT=0 THEN MEM[Q].HH.B1:=0;
IF MEM[Q].HH.B1=MEM[R].HH.B1 THEN MEM[Q+3].INT:=MEM[Q+3].INT+MEM[R+3].
INT ELSE IF(MEM[Q].HH.B1<MEM[R].HH.B1)AND(MEM[R+3].INT<>0)THEN BEGIN MEM
[Q+3].INT:=MEM[R+3].INT;
MEM[Q].HH.B1:=MEM[R].HH.B1;
END;
END;
END;
END ELSE{1116}BEGIN SCANINT;
CASE P OF 0:IF Q=86 THEN CURVAL:=NXPLUSY(EQTB[3620+N].INT,CURVAL,0)ELSE
CURVAL:=XOVERN(EQTB[3620+N].INT,CURVAL);
1:IF Q=86 THEN CURVAL:=NXPLUSY(EQTB[4022+N].INT,CURVAL,0)ELSE CURVAL:=
XOVERN(EQTB[4022+N].INT,CURVAL);
2:BEGIN R:=NEWSPEC(EQTB[2378+N].HH.RH);
IF Q=86 THEN BEGIN MEM[R+1].INT:=NXPLUSY(MEM[EQTB[2378+N].HH.RH+1].INT,
CURVAL,0);
MEM[R+2].INT:=NXPLUSY(MEM[EQTB[2378+N].HH.RH+2].INT,CURVAL,0);
MEM[R+3].INT:=NXPLUSY(MEM[EQTB[2378+N].HH.RH+3].INT,CURVAL,0);
END ELSE BEGIN MEM[R+1].INT:=XOVERN(MEM[EQTB[2378+N].HH.RH+1].INT,CURVAL
);
MEM[R+2].INT:=XOVERN(MEM[EQTB[2378+N].HH.RH+2].INT,CURVAL);
MEM[R+3].INT:=XOVERN(MEM[EQTB[2378+N].HH.RH+3].INT,CURVAL);
END;
END;
END;
END;
IF ARITHERROR THEN BEGIN PRINTNL(918);
BEGIN HELPPTR:=2;
HELPLINE[1]:=919;
HELPLINE[0]:=920;
END;
ERROR;
GOTO 10;
END;
CASE P OF 0:IF(A>=4)THEN GEQWORDDEFIN(3620+N,CURVAL)ELSE EQWORDDEFINE(
3620+N,CURVAL);
1:IF(A>=4)THEN GEQWORDDEFIN(4004+N,CURVAL)ELSE EQWORDDEFINE(4004+N,
CURVAL);
2:IF(A>=4)THEN GEQDEFINE(2361+N,98,CURVAL)ELSE EQDEFINE(2361+N,98,CURVAL
);
END;
END;
{1117}88:BEGIN SCANEIGHTBIT;
IF(A>=4)THEN SAVESTACK[SAVEPTR+0].INT:=1073742080+CURVAL ELSE SAVESTACK[
SAVEPTR+0].INT:=1073741824+CURVAL;
SCANOPTIONAL;
SCANBOX;
END;
{1118}89:BEGIN SCANINT;
N:=CURVAL;
IF N<=0 THEN P:=0 ELSE BEGIN P:=GETNODE(2*N+1);
MEM[P].HH.LH:=N;
FOR J:=1 TO N DO BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[P+2*J-1].INT:=CURVAL;
SCANDIMEN(FALSE,FALSE,FALSE);
MEM[P+2*J].INT:=CURVAL;
END;
END;
IF(A>=4)THEN GEQDEFINE(2634,99,P)ELSE EQDEFINE(2634,99,P);
END;
{1122}90:IF CURCHR=1 THEN BEGIN NEWPATTERNS;
GOTO 10;
PRINTNL(927);
HELPPTR:=0;
ERROR;
END ELSE NEWHYPHEXCEP;
{1123}74:BEGIN SCANTEXINFO(TRUE);
K:=CURVAL;
SCANDIMEN(FALSE,FALSE,FALSE);
FONTINFO[K].INT:=CURVAL;
END;
{1124}83:NEWFONT;
{1132}91:NEWINTERACTI;
OTHERS:CONFUSION(874)END;
10:END;
{1134}PROCEDURE DOASSIGNMENT;
BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
WHILE CURCMD>69 DO BEGIN PREFIXEDCOMM;
{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
END;
END;
{1138}PROCEDURE ISSUEMESSAGE;
VAR OLDSETTING:0..21;
C:0..1;
S:STRNUMBER;
BEGIN C:=CURCHR;
MEM[12013].HH.RH:=SCANTOKS(FALSE,TRUE);
OLDSETTING:=SELECTOR;
SELECTOR:=21;
TOKENSHOW(CURVAL);
SELECTOR:=OLDSETTING;
FLUSHLIST(CURVAL);
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);
END;
S:=MAKESTRING;
IF C=0 THEN{1139}BEGIN IF OFFSET+(STRSTART[S+1]-STRSTART[S])>=
MAXPRINTLINE THEN PRINTLN ELSE PRINTCHAR(32);
PRINT(S);
BREAK(TERMOUT);
END ELSE{1142}BEGIN PRINTNL(618);
PRINT(S);
IF ERRHELPSEEN THEN BEGIN HELPPTR:=1;
HELPLINE[0]:=941;
END ELSE BEGIN HELPPTR:=4;
HELPLINE[3]:=942;
HELPLINE[2]:=943;
HELPLINE[1]:=944;
HELPLINE[0]:=945;
END;
ERROR;
IF INTERACTION<3 THEN ERRHELPSEEN:=TRUE;
END;;
BEGIN STRPTR:=STRPTR-1;
POOLPTR:=STRSTART[STRPTR];
END;
END;
{1146}PROCEDURE SHIFTCASE;
VAR B:HALFWORD;
P:HALFWORD;
T:HALFWORD;
C:EIGHTBITS;
BEGIN P:=SCANTOKS(FALSE,FALSE);
P:=MEM[CURVAL].HH.RH;
WHILE P<>0 DO BEGIN{1147}T:=MEM[P].HH.LH;
IF(T<3328)AND(T>=2816)THEN BEGIN C:=T MOD 256;
IF C<128 THEN IF EQTB[B+C].HH.RH<>0 THEN MEM[P].HH.LH:=256*(T DIV 256)+
EQTB[B+C].HH.RH;
END;
P:=MEM[P].HH.RH;
END;
BEGINTOKENLI(MEM[CURVAL].HH.RH,3);
BEGIN MEM[CURVAL].HH.RH:=AVAIL;
AVAIL:=CURVAL;
{DYNUSED:=DYNUSED-1;}END;
END;
{1151}PROCEDURE SHOWWHATEVER;
VAR P:HALFWORD;
BEGIN CASE CURCHR OF 0:{1152}BEGIN GETTOKEN;
IF CSPTR=0 THEN BEGIN PRINTNL(956);
BEGIN HELPPTR:=1;
HELPLINE[0]:=957;
END;
BACKERROR;
END ELSE BEGIN PRINTNL(958);
SPRINTCS(CSPTR);
PRINTCHAR(61);
PRINTCMDCHR(CURCMD,CURCHR);
IF CURCMD>=94 THEN TOKENSHOW(CURCHR)ELSE IF CURCMD=93 THEN TOKENSHOW(
CURMARK[CURCHR]);
IF INTERACTION<3 THEN BEGIN HELPPTR:=0;
ERRORCOUNT:=ERRORCOUNT-1;
END ELSE BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=952;
HELPLINE[1]:=953;
HELPLINE[0]:=954;
END;
ERROR;
END;
END;
END;
1:{1154}BEGIN SCANEIGHTBIT;
PRINTNL(964);
PRINTINT(CURVAL);
PRINTCHAR(61);
IF EQTB[2637+CURVAL].HH.RH=0 THEN PRINT(965)ELSE SHOWBOX(EQTB[2637+
CURVAL].HH.RH);
IF INTERACTION<3 THEN BEGIN HELPPTR:=0;
ERRORCOUNT:=ERRORCOUNT-1;
END ELSE BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=952;
HELPLINE[1]:=953;
HELPLINE[0]:=954;
END;
ERROR;
END;
END;
2:{1155}BEGIN P:=THETOKS(FALSE);
PRINTNL(958);
TOKENSHOW(CURVAL);
FLUSHLIST(CURVAL);
IF INTERACTION<3 THEN BEGIN HELPPTR:=0;
ERRORCOUNT:=ERRORCOUNT-1;
END ELSE BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=952;
HELPLINE[1]:=953;
HELPLINE[0]:=954;
END;
ERROR;
END;
END;
OTHERS:BEGIN SHOWACTIVITI;
PRINTNL(955);
IF INTERACTION<3 THEN BEGIN HELPPTR:=0;
ERRORCOUNT:=ERRORCOUNT-1;
END ELSE BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=952;
HELPLINE[1]:=953;
HELPLINE[0]:=954;
END;
ERROR;
END;
END END;
END;
{1159}PROCEDURE STOREFMTFILE;
LABEL 41,42,31,32;
VAR J,K,L:INTEGER;
P,Q:HALFWORD;
X:INTEGER;
W:FOURQUARTERS;
BEGIN{1161}IF SAVEPTR<>0 THEN BEGIN PRINTNL(967);
BEGIN HELPPTR:=1;
HELPLINE[0]:=968;
END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;
ERROR;
QUIT;
END;
END;
{1184}IF SELECTOR<18 THEN OPENERRFILE;
SELECTOR:=21;
PRINT(978);
PRINT(JOBNAME);
PRINTCHAR(32);
PRINTINT(ABS(EQTB[3606].INT)MOD 100);
PRINTCHAR(46);
PRINTINT(EQTB[3605].INT);
PRINTCHAR(46);
PRINTINT(EQTB[3604].INT);
PRINTCHAR(41);
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE);
END;
IF INTERACTION=0 THEN SELECTOR:=18 ELSE SELECTOR:=19;
FORMATIDENT:=MAKESTRING;
PACKJOBNAME(979);
WHILE NOT WOPENOUT(FMTFILE)DO PROMPTFILENA(980,979);
PRINTNL(981);
PRINT(WMAKENAMESTR(FMTFILE));
BEGIN STRPTR:=STRPTR-1;
POOLPTR:=STRSTART[STRPTR];
END;
PRINT(FORMATIDENT);
{1164}FMTFILE↑.INT:=157476531;
PUT(FMTFILE);
FMTFILE↑.INT:=12000;
PUT(FMTFILE);
FMTFILE↑.INT:=4277;
PUT(FMTFILE);
FMTFILE↑.INT:=1777;
PUT(FMTFILE);
FMTFILE↑.INT:=307;
PUT(FMTFILE);;
{1166}FMTFILE↑.INT:=POOLPTR;
PUT(FMTFILE);
FMTFILE↑.INT:=STRPTR;
PUT(FMTFILE);
FOR K:=0 TO STRPTR DO FMTFILE↑.INT:=STRSTART[K];
PUT(FMTFILE);
K:=0;
WHILE K+4<POOLPTR DO BEGIN W.B0:=STRPOOL[K];
W.B1:=STRPOOL[K+1];
W.B2:=STRPOOL[K+2];
W.B3:=STRPOOL[K+3];
FMTFILE↑.QQQQ:=W;
PUT(FMTFILE);
K:=K+4;
END;
K:=POOLPTR-4;
W.B0:=STRPOOL[K];
W.B1:=STRPOOL[K+1];
W.B2:=STRPOOL[K+2];
W.B3:=STRPOOL[K+3];
FMTFILE↑.QQQQ:=W;
PUT(FMTFILE);
PRINTLN;
PRINTINT(STRPTR);
PRINT(969);
PRINTINT(POOLPTR);
{1168}SORTAVAIL;
VARUSED:=0;
FMTFILE↑.INT:=ROVER;
PUT(FMTFILE);
P:=0;
Q:=ROVER;
X:=0;
REPEAT FOR K:=P TO Q+1 DO BEGIN FMTFILE↑:=MEM[K];
PUT(FMTFILE);
X:=X+Q+2-P;
VARUSED:=VARUSED+Q-P;
END;
P:=Q+MEM[Q].HH.LH;
Q:=MEM[Q+1].HH.RH;
UNTIL Q=ROVER;
VARUSED:=VARUSED+12000-P;
DYNUSED:=MEMEND-12000;
FMTFILE↑.INT:=MEMEND;
PUT(FMTFILE);
FMTFILE↑.INT:=AVAIL;
PUT(FMTFILE);
FOR K:=P TO MEMEND DO FMTFILE↑:=MEM[K];
PUT(FMTFILE);
P:=AVAIL;
WHILE P<>0 DO BEGIN DYNUSED:=DYNUSED-1;
P:=MEM[P].HH.RH;
END;
FMTFILE↑.INT:=VARUSED;
PUT(FMTFILE);
FMTFILE↑.INT:=DYNUSED;
PUT(FMTFILE);
PRINTLN;
PRINTINT(X+MEMEND+1-P);
PRINT(970);
PRINTINT(VARUSED);
PRINTCHAR(44);
PRINTINT(DYNUSED);
{1170}{1171}K:=1;
REPEAT J:=K;
WHILE J<3582 DO BEGIN IF(EQTB[J].HH.RH=EQTB[J+1].HH.RH)AND(EQTB[J].HH.B0
=EQTB[J+1].HH.B0)AND(EQTB[J].HH.B1=EQTB[J+1].HH.B1)THEN GOTO 41;
J:=J+1;
END;
L:=3583;
GOTO 31;
41:J:=J+1;
L:=J;
WHILE J<3582 DO BEGIN IF(EQTB[J].HH.RH=EQTB[J+1].HH.RH)AND(EQTB[J].HH.B0
=EQTB[J+1].HH.B0)AND(EQTB[J].HH.B1=EQTB[J+1].HH.B1)THEN GOTO 31;
J:=J+1;
END;
31:FMTFILE↑.INT:=L-K;
PUT(FMTFILE);
WHILE K<L DO BEGIN FMTFILE↑:=EQTB[K];
PUT(FMTFILE);
K:=K+1;
END;
K:=J+1;
FMTFILE↑.INT:=K-L;
PUT(FMTFILE);
UNTIL K=3583;
{1172}REPEAT J:=K;
WHILE J<4277 DO BEGIN IF EQTB[J].INT=EQTB[J+1].INT THEN GOTO 42;
J:=J+1;
END;
L:=4278;
GOTO 32;
42:J:=J+1;
L:=J;
WHILE J<4277 DO BEGIN IF EQTB[J].INT=EQTB[J+1].INT THEN GOTO 32;
J:=J+1;
END;
32:FMTFILE↑.INT:=L-K;
PUT(FMTFILE);
WHILE K<L DO BEGIN FMTFILE↑:=EQTB[K];
PUT(FMTFILE);
K:=K+1;
END;
K:=J+1;
FMTFILE↑.INT:=K-L;
PUT(FMTFILE);
UNTIL K>4277;
{1174}FMTFILE↑.INT:=HASHUSED;
PUT(FMTFILE);
CSCOUNT:=2356-HASHUSED;
FOR P:=257 TO HASHUSED DO IF HASH[P].RH<>0 THEN BEGIN FMTFILE↑.INT:=P;
PUT(FMTFILE);
FMTFILE↑.HH:=HASH[P];
PUT(FMTFILE);
CSCOUNT:=CSCOUNT+1;
END;
FOR P:=HASHUSED+1 TO 2359 DO FMTFILE↑.HH:=HASH[P];
PUT(FMTFILE);
FMTFILE↑.INT:=CSCOUNT;
PUT(FMTFILE);
PRINTLN;
PRINTINT(CSCOUNT);
PRINT(971);
{1176}FMTFILE↑.INT:=FMEMPTR;
PUT(FMTFILE);
FOR K:=7 TO FMEMPTR-1 DO FMTFILE↑:=FONTINFO[K];
PUT(FMTFILE);
FMTFILE↑.INT:=FONTPTR;
PUT(FMTFILE);
FOR K:=1 TO FONTPTR DO{1178}BEGIN FMTFILE↑.INT:=FONTCODE[K];
PUT(FMTFILE);
FMTFILE↑.QQQQ:=FONTCHECK[K];
PUT(FMTFILE);
FMTFILE↑.INT:=FONTSIZE[K];
PUT(FMTFILE);
IF FONTSCALED[K]THEN BEGIN FMTFILE↑.INT:=1;
PUT(FMTFILE);
END ELSE BEGIN FMTFILE↑.INT:=0;
PUT(FMTFILE);
END;
FMTFILE↑.INT:=FONTPARAMS[K];
PUT(FMTFILE);
FMTFILE↑.INT:=FONTNAME[K];
PUT(FMTFILE);
FMTFILE↑.INT:=FONTAREA[K];
PUT(FMTFILE);
FMTFILE↑.INT:=FONTBC[K];
PUT(FMTFILE);
FMTFILE↑.INT:=FONTEC[K];
PUT(FMTFILE);
FMTFILE↑.INT:=CHARBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=WIDTHBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=HEIGHTBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=DEPTHBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=ITALICBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=LIGKERNBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=KERNBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=EXTENBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=PARAMBASE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=FONTGLUE[K];
PUT(FMTFILE);
PRINTNL(974);
PRINTINT(FONTCODE[K]);
PRINTCHAR(61);
PRINTFILENAM(FONTNAME[K],FONTAREA[K],529);
IF FONTSCALED[K]THEN BEGIN PRINT(544);
PRINTSCALED(FONTSIZE[K]);
PRINT(482);
END;
END;
FOR K:=0 TO BADFONTCODE-1 DO IF(FONTNUMBER[K]<>0)AND(FONTCODE[FONTNUMBER
[K]]<>K)THEN BEGIN FMTFILE↑.INT:=FONTNUMBER[K];
PUT(FMTFILE);
FMTFILE↑.INT:=K;
PUT(FMTFILE);
END;
FMTFILE↑.INT:=0;
PUT(FMTFILE);
PRINTLN;
PRINTINT(FMEMPTR-7);
PRINT(972);
PRINTINT(FONTPTR-0);
PRINT(973);
{1180}FMTFILE↑.INT:=HYPHCOUNT;
PUT(FMTFILE);
FOR K:=0 TO 307 DO IF HYPHWORD[K]<>0 THEN BEGIN FMTFILE↑.INT:=K;
PUT(FMTFILE);
FMTFILE↑.INT:=HYPHWORD[K];
PUT(FMTFILE);
FMTFILE↑.INT:=HYPHLIST[K];
PUT(FMTFILE);
END;
FMTFILE↑.INT:=TRIEMAX;
PUT(FMTFILE);
FOR K:=0 TO TRIEMAX DO FMTFILE↑.HH:=TRIE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=TRIEOPPTR;
PUT(FMTFILE);
FOR K:=1 TO TRIEOPPTR DO BEGIN FMTFILE↑.INT:=HYFDISTANCE[K];
PUT(FMTFILE);
FMTFILE↑.INT:=HYFNUM[K];
PUT(FMTFILE);
FMTFILE↑.INT:=HYFNEXT[K];
PUT(FMTFILE);
END;
PRINTLN;
PRINTINT(HYPHCOUNT);
PRINT(975);
PRINTNL(976);
PRINTINT(TRIEMAX);
PRINT(564);
PRINTINT((TRIEOPPTR-0));
PRINT(977);
{1182}FMTFILE↑.INT:=INTERACTION;
PUT(FMTFILE);
FMTFILE↑.INT:=FORMATIDENT;
PUT(FMTFILE);
FMTFILE↑.INT:=69069;
PUT(FMTFILE);
WCLOSE(FMTFILE);
END;
{1205}{1206}PROCEDURE NEWWHATSIT(S:SMALLNUMBER;
W:SMALLNUMBER);
VAR P:HALFWORD;
BEGIN P:=GETNODE(W);
MEM[P].HH.B0:=8;
MEM[P].HH.B1:=S;
MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END;
{1207}PROCEDURE NEWSENDWHATS(W:SMALLNUMBER);
VAR P:HALFWORD;
BEGIN NEWWHATSIT(CURCHR,W);
SCANFOURBITI;
MEM[CURLIST.TAILFIELD+1].HH.LH:=CURVAL;
END;
PROCEDURE DOEXTENSION;
VAR I,J,K:INTEGER;
P,Q,R:HALFWORD;
BEGIN CASE CURCHR OF 0:{1208}BEGIN NEWSENDWHATS(3);
SCANOPTIONAL;
SCANFILENAME;
MEM[CURLIST.TAILFIELD+1].HH.RH:=CURNAME;
MEM[CURLIST.TAILFIELD+2].HH.LH:=CURAREA;
MEM[CURLIST.TAILFIELD+2].HH.RH:=CUREXT;
END;
1:{1209}BEGIN K:=CSPTR;
NEWSENDWHATS(2);
CSPTR:=K;
P:=SCANTOKS(FALSE,FALSE);
MEM[CURLIST.TAILFIELD+1].HH.RH:=CURVAL;
END;
2:{1210}BEGIN NEWSENDWHATS(2);
MEM[CURLIST.TAILFIELD+1].HH.RH:=0;
END;
3:{1212}BEGIN NEWWHATSIT(3,2);
MEM[CURLIST.TAILFIELD+1].HH.LH:=0;
P:=SCANTOKS(FALSE,TRUE);
MEM[CURLIST.TAILFIELD+1].HH.RH:=CURVAL;
END;
OTHERS:CONFUSION(994)END;
END;
{938}PROCEDURE HANDLERIGHTB;
LABEL 30,10;
VAR P:HALFWORD;
BEGIN CASE CURGROUP OF 1:UNSAVE;
0:BEGIN PRINTNL(728);
BEGIN HELPPTR:=2;
HELPLINE[1]:=729;
HELPLINE[0]:=730;
END;
ERROR;
END;
15,16,17:EXTRARIGHTBR;
{955}2:PACKAGE(0);
3:BEGIN ENDGRAF;
PACKAGE(0);
END;
4:BEGIN ENDGRAF;
PACKAGE(4);
END;
{970}13:BEGIN ENDGRAF;
UNSAVE;
SAVEPTR:=SAVEPTR-1;
IF CURLIST.HEADFIELD<>CURLIST.TAILFIELD THEN BEGIN P:=VPACKAGE(MEM[
CURLIST.HEADFIELD].HH.RH,0,1,134217727);
POPNEST;
IF SAVESTACK[SAVEPTR+0].INT<255 THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].
HH.RH:=GETNODE(3);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B0:=3;
MEM[CURLIST.TAILFIELD].HH.B1:=(SAVESTACK[SAVEPTR+0].INT+0);
MEM[CURLIST.TAILFIELD+1].INT:=MEM[P+3].INT+MEM[P+2].INT;
MEM[CURLIST.TAILFIELD+2].INT:=MEM[P+5].HH.RH;
END ELSE BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B0:=5;
MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].INT:=MEM[P+5].HH.RH;
END;
FREENODE(P,7);
END;
{365}BEGIN GETNCTOKEN;
IF CURCMD<>10 THEN BACKINPUT;
END;
END;
10:{896}BEGIN UNSAVE;
OUTPUTACTIVE:=FALSE;
{897}IF EQTB[2892].HH.RH<>0 THEN BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=688;
HELPLINE[1]:=689;
HELPLINE[0]:=690;
END;
PRINTNL(691);
ERROR;
FLUSHNODELIS(EQTB[2892].HH.RH);
EQTB[2892].HH.RH:=0;
END;
IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN BEGIN MEM[CURLIST.TAILFIELD
].HH.RH:=MEM[12001].HH.RH;
MEM[12001].HH.RH:=MEM[CURLIST.HEADFIELD].HH.RH;
END;
POPNEST;
BUILDPAGE;
END;
{988}12:BUILDDISCRET;
{1006}9:BEGIN ENDGRAF;
UNSAVE;
ALIGNPEEK;
END;
{1037}14:BEGIN ENDGRAF;
UNSAVE;
SAVEPTR:=SAVEPTR-2;
P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+1].INT,
SAVESTACK[SAVEPTR+0].INT,134217727);
POPNEST;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B0:=28;
MEM[CURLIST.TAILFIELD+1].HH.RH:=2;
MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
END;
{1053}11:BEGIN UNSAVE;
SAVEPTR:=SAVEPTR-1;
MEM[SAVESTACK[SAVEPTR+0].INT].HH.RH:=3;
MEM[SAVESTACK[SAVEPTR+0].INT].HH.LH:=FINMLIST(0);
END;
{1084}5:BEGIN LEAVETRANSPA;
{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF CURCMD=57 THEN PASSBLOCK(0)ELSE BEGIN PRINTNL(856);
BEGIN HELPPTR:=3;
HELPLINE[2]:=860;
HELPLINE[1]:=858;
HELPLINE[0]:=859;
END;
BACKERROR;
END;
END;
6:BEGIN LEAVETRANSPA;
{365}BEGIN GETNCTOKEN;
IF CURCMD<>10 THEN BACKINPUT;
END;
END;
{1088}7:BEGIN LEAVETRANSPA;
WHILE TRUE DO BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
IF CURCMD=1 THEN PASSBLOCK(1)ELSE IF CURCMD=57 THEN GOTO 30 ELSE{1089}
BEGIN PRINTNL(864);
BEGIN HELPPTR:=3;
HELPLINE[2]:=865;
HELPLINE[1]:=866;
HELPLINE[0]:=859;
END;
BACKERROR;
GOTO 10;
END;
END;
30:PASSBLOCK(0);
END;
OTHERS:CONFUSION(731)END;
10:END;
PROCEDURE MAINCONTROL;
LABEL 60,21,70,71,72,73,74,10;
VAR T:INTEGER;
{900}L:QUARTERWORD;
C:EIGHTBITS;
F:INTERNALFONT;
R:HALFWORD;
P:HALFWORD;
K:0..FONTMEMSIZE;
Q:HALFWORD;
I:FOURQUARTERS;
J:FOURQUARTERS;
S:INTEGER;
LIGATUREPRES:BOOLEAN;
BEGIN 60:GETNCTOKEN;
BEGIN IF INTERRUPT<>0 THEN PAUSEFORINST;
END;
{IF PANICKING THEN CHECKMEM(FALSE);
}21:CASE ABS(CURLIST.MODEFIELD)+CURCMD OF 104,105:GOTO 70;
109:BEGIN SCANCHARNUM;
CURCHR:=CURVAL;
GOTO 70;
END;
103:IF CURLIST.AUXFIELD=1000 THEN GOTO 74 ELSE APPSPACE;
156,248:GOTO 74;
{914}1,93,185,11,14,195:;
40,132,224:BEGIN{362}REPEAT GETNCTOKEN;
UNTIL CURCMD<>10;
GOTO 21;
END;
20:STARTINPUT;
15:GOTO 10;
{919}112,204,{925}36,129,221,{943}24,115,207,{961}226,{968}39,223,{981}
209,43,{995}228,{1003}34,125,218,{1015}47,139,7,99,191:REPORTILLEGA;
{917}8,100,9,101,18,110,49,141,16,108,48,140,51,143,65,157,52,144,54,146
,53,145,31,123,50,142,29,121,45,137,194,198,199,212:BEGIN INSERTDOLLAR;
GOTO 21;
END;
{924}37,128,220:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=SCANRULESPEC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
IF ABS(CURLIST.MODEFIELD)=1 THEN CURLIST.AUXFIELD:=-65536000;
END;
{926}28,119,211,213:APPENDGLUE;
30,122,214,215:APPENDKERN;
{932}2,94:NEWSAVELEVEL(1);
61,153,245:NEWSAVELEVEL(15);
62,154,246:IF CURGROUP=15 THEN UNSAVE ELSE OFFSAVE;
{937}3,95,187:HANDLERIGHTB;
{942}23,116,208:BEGIN T:=CURCHR;
SCANDIMEN(FALSE,FALSE,FALSE);
IF T=0 THEN SAVESTACK[SAVEPTR+0].INT:=CURVAL ELSE SAVESTACK[SAVEPTR+0].
INT:=-CURVAL;
SCANBOX;
END;
32,124,216:BEGIN SAVESTACK[SAVEPTR+0].INT:=1073742237+CURCHR;
SCANBOX;
END;
22,114,206:BEGIN SAVESTACK[SAVEPTR+0].INT:=0;
BEGINBOX;
END;
{960}42:NEWGRAF(CURCHR>0);
12,13,17,4,66,67,44,46,27,64,68:BEGIN NEWGRAF(TRUE);
GOTO 21;
END;
{963}134:INDENTINHMOD;
{965}106:BEGIN ENDGRAF;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;
END;
107,120:BEGIN BACKINPUT;
CURTOK:=PARTOKEN;
CSPTR:=PARLOC;
CURCMD:=EQTB[CSPTR].HH.B0;
CURCHR:=EQTB[CSPTR].HH.RH;
GOTO 21;
END;
{967}38,130,222,131:BEGININSERTO;
19,111,203:MAKEMARK;
{972}70,162,254:CHANGEAUX;
{974}41,133,225:APPENDPENALT;
{976}26,118,210:DELETESKIP;
{979}25,117:UNPACKAGE;
{982}135:APPENDITALIC;
227:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(0);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
{986}138,230:APPENDDISCRE;
{992}158,250:BEGIN MEM[12013].HH.RH:=THETOKS(CURCHR>0);
BEGINTOKENLI(CURVAL,3);
END;
159,251:BEGIN MEM[12013].HH.RH:=NUMTOKS;
BEGINTOKENLI(CURVAL,3);
END;
160,252,161,253:INSTHE;
{994}136:MAKEACCENT;
{999}6,98,190,5,97,189:BEGIN ALIGNERROR;
GOTO 21;
END;
35,127,219:NOALIGNERROR;
63,155,247:OMITERROR;
{1004}33,126:INITALIGN;
217:IF PRIVILEGED THEN IF CURGROUP=16 THEN INITALIGN ELSE OFFSAVE;
10,102:DOENDV;
{1007}96:INITMATH;
{1011}231:IF PRIVILEGED THEN STARTEQNO;
{1021}186:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
BACKINPUT;
SCANMATH(CURLIST.TAILFIELD+1);
END;
{1024}196,197:SETMATHCHAR(EQTB[3071+CURCHR].HH.RH);
201:BEGIN SCANCHARNUM;
SETMATHCHAR(CURVAL+28672);
END;
202:BEGIN SCANFIFTEENB;
SETMATHCHAR(CURVAL);
END;
200:BEGIN SCANTWENTYSE;
SETMATHCHAR(CURVAL DIV 4096);
END;
{1028}233:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD].HH.B0:=CURCHR;
SCANMATH(CURLIST.TAILFIELD+1);
END;
234:MATHLIMITSWI;
{1032}249:MATHRADICAL;
{1034}229:MATHAC;
{1036}238:BEGIN SCANSPEC;
NEWSAVELEVEL(14);
PUSHNEST;
CURLIST.MODEFIELD:=-1;
CURLIST.AUXFIELD:=-65536000;
END;
{1040}236:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWSTYLE(CURCHR);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
237:MATHNONSCRIP;
{1042}193,192:SUBSUP;
{1047}235:MATHFRACTION;
{1056}232:MATHLEFTRIGH;
{1059}188:IF CURGROUP=16 THEN FINMATH ELSE OFFSAVE;
{1075}56,148,240:CONDITIONAL;
{1085}57,149,241:CASECONDITIO;
58,150,242:SPURIOUSELSE;
{1092}71,163,255,72,164,256,73,165,257,74,166,258,75,167,259,76,168,260,
77,169,261,78,170,262,79,171,263,80,172,264,81,173,265,82,174,266,83,175
,267,84,176,268,85,177,269,86,178,270,87,179,271,88,180,272,89,181,273,
90,182,274,91,183,275,92,184,276:PREFIXEDCOMM;
{1135}59,151,243:ISSUEMESSAGE;
{1143}55,147,239:SHIFTCASE;
{1148}21,113,205:SHOWWHATEVER;
{1204}60,152,244:DOEXTENSION;
END;
GOTO 60;
70:{901}F:=EQTB[2893].HH.RH;
IF F=0 THEN BEGIN MISSINGFONT;
GOTO 60;
END;
C:=CURCHR;
71:IF(C<FONTBC[F])OR(C>FONTEC[F])THEN BEGIN CHARWARNING(F,C);
GOTO 60;
END;
72:Q:=CURLIST.TAILFIELD;
LIGATUREPRES:=FALSE;
L:=(C+0);
73:{903}IF C<128 THEN BEGIN S:=EQTB[3455+C].HH.RH;
IF S=1000 THEN CURLIST.AUXFIELD:=1000 ELSE IF S<1000 THEN BEGIN IF S>0
THEN CURLIST.AUXFIELD:=S;
END ELSE IF CURLIST.AUXFIELD<1000 THEN CURLIST.AUXFIELD:=1000 ELSE
CURLIST.AUXFIELD:=S;
END ELSE CURLIST.AUXFIELD:=1000;
{904}I:=FONTINFO[CHARBASE[F]+L].QQQQ;
IF(I.B0>0)THEN BEGIN P:=AVAIL;
IF P=0 THEN P:=GETAVAIL ELSE BEGIN AVAIL:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;
{DYNUSED:=DYNUSED+1;}END;
MEM[P].HH.B0:=F;
MEM[P].HH.B1:=(C+0);
MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END ELSE CHARWARNING(F,(L-0));
{905}GETNEXT;
IF(CURCMD=11)OR(CURCMD=12)THEN R:=(CURCHR+0)ELSE BEGIN NCTOKEN;
IF CURCMD=16 THEN BEGIN SCANCHARNUM;
R:=(CURVAL+0);
END ELSE R:=(256);
END;
IF(((I.B2-0)MOD 4)=1)AND(R<>(256))THEN{906}BEGIN K:=LIGKERNBASE[F]+I.B3;
REPEAT J:=FONTINFO[K].QQQQ;
IF J.B1=R THEN IF J.B2<128 THEN{909}BEGIN LIGATUREPRES:=TRUE;
L:=J.B3;
C:=(R-0);
GOTO 73;
END ELSE{907}BEGIN{908}IF LIGATUREPRES THEN BEGIN P:=NEWLIGATURE(F,C,MEM
[Q].HH.RH);
MEM[Q].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END;
IF C=45 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[KERNBASE[F]+J.B3].
INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
C:=(R-0);
GOTO 72;
END;
K:=K+1;
UNTIL J.B0>=128;
END;
{908}IF LIGATUREPRES THEN BEGIN P:=NEWLIGATURE(F,C,MEM[Q].HH.RH);
MEM[Q].HH.RH:=P;
CURLIST.TAILFIELD:=P;
END;
IF C=45 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
IF R=(256)THEN GOTO 21;
C:=(R-0);
GOTO 71;;
74:{910}IF EQTB[2372].HH.RH=0 THEN BEGIN{911}BEGIN P:=FONTGLUE[EQTB[2893
].HH.RH];
IF P=0 THEN BEGIN F:=EQTB[2893].HH.RH;
P:=NEWSPEC(0);
K:=PARAMBASE[F]+2;
MEM[P+1].INT:=FONTINFO[K].INT;
MEM[P+2].INT:=FONTINFO[K+1].INT;
MEM[P+3].INT:=FONTINFO[K+2].INT;
FONTGLUE[F]:=P;
END;
END;
Q:=NEWGLUE(P);
END ELSE Q:=NEWPARAMGLUE(11);
MEM[CURLIST.TAILFIELD].HH.RH:=Q;
CURLIST.TAILFIELD:=Q;
GOTO 60;
10:END;
{1160}{439}FUNCTION OPENFMTFILE:BOOLEAN;
LABEL 40,10;
VAR J:0..BUFSIZE;
BEGIN IF BUFFER[CURINPUT.LOCFIELD]<>92 THEN BEGIN J:=CURINPUT.LOCFIELD+1
;
BUFFER[CURINPUT.LIMITFIELD]:=32;
WHILE BUFFER[J]<>32 DO J:=J+1;
PACKBUFFERED(0,CURINPUT.LOCFIELD,J-1);
IF WOPENIN(FMTFILE)THEN BEGIN CURINPUT.LOCFIELD:=J;
GOTO 40;
END;
PACKBUFFERED(13,CURINPUT.LOCFIELD,J-1);
IF WOPENIN(FMTFILE)THEN BEGIN CURINPUT.LOCFIELD:=J;
GOTO 40;
END;
END;
PACKBUFFERED(18,1,0);
IF NOT WOPENIN(FMTFILE)THEN BEGIN WRITELN(TERMOUT,
'I can''t find the BASIC format file!');
OPENFMTFILE:=FALSE;
GOTO 10;
END;
40:OPENFMTFILE:=TRUE;
10:END;
FUNCTION LOADFMTFILE:BOOLEAN;
LABEL 6666,10;
VAR J,K:INTEGER;
P,Q:HALFWORD;
X,Y:INTEGER;
W:FOURQUARTERS;
BEGIN{1165}GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<>157476531 THEN GOTO 6666;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<>12000 THEN GOTO 6666;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<>4277 THEN GOTO 6666;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<>1777 THEN GOTO 6666;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<>307 THEN GOTO 6666;;
{1167}GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<0 THEN GOTO 6666;
IF X>POOLSIZE THEN BEGIN WRITE(TERMOUT,'---! Must increase the ',
'string pool size');
GOTO 6666;
END ELSE POOLPTR:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<0 THEN GOTO 6666;
IF X>MAXSTRINGS THEN BEGIN WRITE(TERMOUT,'---! Must increase the ',
'max strings');
GOTO 6666;
END ELSE STRPTR:=X;
FOR K:=0 TO STRPTR DO GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>POOLPTR)THEN GOTO 6666 ELSE STRSTART[K]:=X;
K:=0;
WHILE K+4<POOLPTR DO BEGIN GET(FMTFILE);
W:=FMTFILE↑.QQQQ;
STRPOOL[K]:=W.B0;
STRPOOL[K+1]:=W.B1;
STRPOOL[K+2]:=W.B2;
STRPOOL[K+3]:=W.B3;
K:=K+4;
END;
K:=POOLPTR-4;
GET(FMTFILE);
W:=FMTFILE↑.QQQQ;
STRPOOL[K]:=W.B0;
STRPOOL[K+1]:=W.B1;
STRPOOL[K+2]:=W.B2;
STRPOOL[K+3]:=W.B3;
{1169}GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>12000)THEN GOTO 6666 ELSE ROVER:=X;
P:=0;
Q:=ROVER;
X:=0;
REPEAT FOR K:=P TO Q+1 DO GET(FMTFILE);
MEM[K]:=FMTFILE↑;
P:=Q+MEM[Q].HH.LH;
IF(P>12000)OR((Q<=MEM[Q+1].HH.RH)AND(Q<>ROVER))THEN GOTO 6666;
Q:=MEM[Q+1].HH.RH;
UNTIL Q=ROVER;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<12000 THEN GOTO 6666;
IF X>MEMMAX THEN BEGIN WRITE(TERMOUT,'---! Must increase the ','mem max'
);
GOTO 6666;
END ELSE MEMEND:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<12000)OR(X>MEMEND)THEN GOTO 6666 ELSE AVAIL:=X;
FOR K:=P TO MEMEND DO GET(FMTFILE);
MEM[K]:=FMTFILE↑;
GET(FMTFILE);
VARUSED:=FMTFILE↑.INT;
GET(FMTFILE);
DYNUSED:=FMTFILE↑.INT;
MAXVARUSED:=VARUSED;
{1175}{1173}K:=1;
REPEAT GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<1)OR(K+X>4277)THEN GOTO 6666;
FOR J:=K TO K+X-1 DO GET(FMTFILE);
EQTB[J]:=FMTFILE↑;
K:=K+X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(K+X>4278)THEN GOTO 6666;
FOR J:=K TO K+X-1 DO EQTB[J]:=EQTB[K-1];
K:=K+X;
UNTIL K>4277;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<257)OR(X>2357)THEN GOTO 6666 ELSE HASHUSED:=X;
P:=256;
REPEAT GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<P+1)OR(X>HASHUSED)THEN GOTO 6666 ELSE P:=X;
GET(FMTFILE);
HASH[P]:=FMTFILE↑.HH;
UNTIL P=HASHUSED;
FOR P:=HASHUSED+1 TO 2359 DO GET(FMTFILE);
HASH[P]:=FMTFILE↑.HH;
GET(FMTFILE);
CSCOUNT:=FMTFILE↑.INT;
{1177}GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<7 THEN GOTO 6666;
IF X>FONTMEMSIZE THEN BEGIN WRITE(TERMOUT,'---! Must increase the ',
'font mem size');
GOTO 6666;
END ELSE FMEMPTR:=X;
FOR K:=7 TO FMEMPTR-1 DO GET(FMTFILE);
FONTINFO[K]:=FMTFILE↑;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<0 THEN GOTO 6666;
IF X>FONTMAX THEN BEGIN WRITE(TERMOUT,'---! Must increase the ',
'font max');
GOTO 6666;
END ELSE FONTPTR:=X;
FOR K:=1 TO FONTPTR DO{1179}BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>BADFONTCODE)THEN GOTO 6666 ELSE FONTCODE[K]:=X;
FONTNUMBER[FONTCODE[K]]:=K;
GET(FMTFILE);
FONTCHECK[K]:=FMTFILE↑.QQQQ;
GET(FMTFILE);
FONTSIZE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X=0 THEN FONTSCALED[K]:=FALSE ELSE IF X=1 THEN FONTSCALED[K]:=TRUE
ELSE GOTO 6666;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>65535)THEN GOTO 6666 ELSE FONTPARAMS[K]:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTNAME[K]:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTAREA[K]:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTBC[K]:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTEC[K]:=X;
GET(FMTFILE);
CHARBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
WIDTHBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
HEIGHTBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
DEPTHBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
ITALICBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
LIGKERNBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
KERNBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
EXTENBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
PARAMBASE[K]:=FMTFILE↑.INT;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>12000)THEN GOTO 6666 ELSE FONTGLUE[K]:=X;
END;
REPEAT GET(FMTFILE);
Y:=FMTFILE↑.INT;
IF EOF(FMTFILE)THEN GOTO 6666;
IF Y<>0 THEN BEGIN IF(Y<0)OR(Y>=FONTPTR)THEN GOTO 6666;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>BADFONTCODE)THEN GOTO 6666 ELSE K:=X;
FONTNUMBER[K]:=Y;
END;
UNTIL Y=0;
{1181}GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>307)THEN GOTO 6666 ELSE HYPHCOUNT:=X;
FOR K:=1 TO HYPHCOUNT DO BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>307)THEN GOTO 6666 ELSE J:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE HYPHWORD[K]:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>65535)THEN GOTO 6666 ELSE HYPHLIST[K]:=X;
END;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF X<0 THEN GOTO 6666;
IF X>TRIESIZE THEN BEGIN WRITE(TERMOUT,'---! Must increase the ',
'trie size');
GOTO 6666;
END ELSE TRIEMAX:=X;
FOR K:=0 TO TRIEMAX DO GET(FMTFILE);
TRIE[K]:=FMTFILE↑.HH;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE TRIEOPPTR:=X;
FOR K:=1 TO TRIEOPPTR DO BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFDISTANCE[K]:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFNUM[K]:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE HYFNEXT[K]:=X;
END;
{1183}GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>3)THEN GOTO 6666 ELSE INTERACTION:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FORMATIDENT:=X;
GET(FMTFILE);
X:=FMTFILE↑.INT;
IF(X<>69069)OR EOF(FMTFILE)THEN GOTO 6666;
LOADFMTFILE:=TRUE;
GOTO 10;
6666:LOADFMTFILE:=FALSE;
10:END;
{1185}{1189}PROCEDURE CLOSEFILESAN;
VAR K:INTEGER;
BEGIN{DEBUGHELP;
}{549}IF TOTALPAGES=0 THEN PRINTNL(574)ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=
240;
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
DVIFOUR(LASTBOP);
LASTBOP:=DVIOFFSET+DVIPTR-5;
DVIFOUR(25400000);
DVIFOUR(473628672);
PREPAREMAG;
DVIFOUR(EQTB[3600].INT);
DVIFOUR(MAXV);
DVIFOUR(MAXH);
BEGIN DVIBUF[DVIPTR]:=MAXPUSH DIV 256;
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
BEGIN DVIBUF[DVIPTR]:=MAXPUSH MOD 256;
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
BEGIN DVIBUF[DVIPTR]:=TOTALPAGES DIV 256;
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
BEGIN DVIBUF[DVIPTR]:=TOTALPAGES MOD 256;
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
{550}WHILE FONTPTR>0 DO BEGIN IF FONTUSED[FONTPTR]THEN BEGIN DVIFOUR(
FONTPTR-1);
BEGIN DVIBUF[DVIPTR]:=(FONTCHECK[FONTPTR].B0-0);
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
BEGIN DVIBUF[DVIPTR]:=(FONTCHECK[FONTPTR].B1-0);
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
BEGIN DVIBUF[DVIPTR]:=(FONTCHECK[FONTPTR].B2-0);
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
BEGIN DVIBUF[DVIPTR]:=(FONTCHECK[FONTPTR].B3-0);
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
DVIFOUR(FONTSIZE[FONTPTR]);
BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTAREA[FONTPTR]+1]-STRSTART[FONTAREA[
FONTPTR]]);
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTNAME[FONTPTR]+1]-STRSTART[FONTNAME[
FONTPTR]]);
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
{551}FOR K:=STRSTART[FONTAREA[FONTPTR]]TO STRSTART[FONTAREA[FONTPTR]+1]
-1 DO BEGIN DVIBUF[DVIPTR]:=STRPOOL[K];
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
FOR K:=STRSTART[FONTNAME[FONTPTR]]TO STRSTART[FONTNAME[FONTPTR]+1]-1 DO
BEGIN DVIBUF[DVIPTR]:=STRPOOL[K];
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
END;
FONTPTR:=FONTPTR-1;
END;
DVIFOUR(-1);
DVIFOUR(LASTBOP);
BEGIN DVIBUF[DVIPTR]:=2;
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
K:=4+((DVIBUFSIZE-DVIPTR)MOD 4);
WHILE K>0 DO BEGIN BEGIN DVIBUF[DVIPTR]:=223;
DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
K:=K-1;
END;
{510}IF DVILIMIT=HALFBUF THEN WRITEDVI(HALFBUF,DVIBUFSIZE-1);
IF DVIPTR>0 THEN WRITEDVI(0,DVIPTR-1);
PRINTNL(575);
PRINT(OUTPUTFILENA);
PRINTCHAR(46);
BCLOSE(DVIFILE);
END;
{1224}FOR K:=0 TO 15 DO IF SENDOPEN[K]THEN ACLOSE(SENDFILE[K]);
{IF EQTB[3614].INT<>0 THEN[1190]PRINTNL(982);
PRINTINT(MAXVARUSED);
PRINTCHAR(44);
PRINTINT(MEMEND-12000);
PRINTLN;
PRINTINT(CSCOUNT);
PRINT(983);
PRINTLN;
PRINTINT(TOTALPAGES);
PRINT(984)PRINTINT(DIVPTR);
PRINT(985);}IF JOBNAME<>0 THEN BEGIN WRITELN(ERRFILE);
ACLOSE(ERRFILE);
END;
END;
{1191}PROCEDURE FINALCLEANUP;
LABEL 30,10;
VAR C:SMALLNUMBER;
K:SMALLNUMBER;
BEGIN C:=CURCHR;
IF JOBNAME=0 THEN OPENERRFILE;
{1192}K:=0;
WHILE TRUE DO BEGIN BUILDPAGE;
IF 12002=PAGETAIL THEN GOTO 30;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNULLBOX;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4008].INT;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(-10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END;
K:=K+1;
IF K>25 THEN BEGIN PRINTNL(988);
GOTO 30;
END;
END;
30:;
IF CURLEVEL>0 THEN BEGIN PRINTNL(986);
PRINTINT(CURLEVEL);
PRINTCHAR(41);
END;
IF C=1 THEN BEGIN STOREFMTFILE;
GOTO 10;
PRINTNL(987);
END;
10:END;
{1194}PROCEDURE INITPRIM;
BEGIN NONEWCONTROL:=FALSE;
{216}PRIMITIVE(226,73,0);
PRIMITIVE(227,73,1);
PRIMITIVE(228,73,2);
PRIMITIVE(229,73,3);
PRIMITIVE(230,73,4);
PRIMITIVE(231,73,5);
PRIMITIVE(232,73,6);
PRIMITIVE(233,73,7);
PRIMITIVE(234,73,8);
PRIMITIVE(235,73,9);
PRIMITIVE(236,73,10);
PRIMITIVE(237,73,11);
PRIMITIVE(238,73,12);
PRIMITIVE(239,73,13);
PRIMITIVE(240,73,14);
PRIMITIVE(241,73,15);
PRIMITIVE(242,73,16);
{219}PRIMITIVE(244,70,2635);
PRIMITIVE(245,70,2636);
{224}PRIMITIVE(246,71,0);
PRIMITIVE(247,71,1);
PRIMITIVE(248,71,2);
PRIMITIVE(249,71,3);
PRIMITIVE(250,71,4);
PRIMITIVE(251,71,5);
PRIMITIVE(252,71,6);
PRIMITIVE(253,71,7);
PRIMITIVE(254,71,8);
PRIMITIVE(255,71,9);
PRIMITIVE(256,71,10);
PRIMITIVE(257,71,11);
PRIMITIVE(258,71,10);
PRIMITIVE(259,71,13);
PRIMITIVE(260,71,14);
PRIMITIVE(261,71,15);
PRIMITIVE(262,71,16);
PRIMITIVE(263,71,17);
PRIMITIVE(264,71,18);
PRIMITIVE(265,71,19);
PRIMITIVE(266,71,20);
PRIMITIVE(267,71,21);
PRIMITIVE(268,71,22);
PRIMITIVE(269,71,23);
PRIMITIVE(270,71,24);
PRIMITIVE(271,71,25);
PRIMITIVE(272,71,26);
PRIMITIVE(273,71,27);
PRIMITIVE(274,71,28);
PRIMITIVE(275,71,29);
PRIMITIVE(276,71,30);
PRIMITIVE(277,71,31);
PRIMITIVE(278,71,32);
PRIMITIVE(279,71,33);
PRIMITIVE(280,71,34);
PRIMITIVE(281,71,35);
PRIMITIVE(282,71,36);
{229}PRIMITIVE(284,72,0);
PRIMITIVE(285,72,1);
PRIMITIVE(286,72,2);
PRIMITIVE(287,72,3);
PRIMITIVE(288,72,4);
PRIMITIVE(289,72,5);
PRIMITIVE(290,72,6);
PRIMITIVE(291,72,7);
PRIMITIVE(292,72,8);
PRIMITIVE(293,72,9);
PRIMITIVE(294,72,10);
PRIMITIVE(295,72,11);
PRIMITIVE(296,72,12);
PRIMITIVE(297,72,13);
PRIMITIVE(298,72,14);
PRIMITIVE(299,72,15);
PRIMITIVE(300,72,16);
{246}PRIMITIVE(306,0,0);
PRIMITIVE(307,81,0);
PRIMITIVE(308,16,0);
PRIMITIVE(309,17,0);
PRIMITIVE(310,18,0);
PRIMITIVE(311,19,0);
PRIMITIVE(312,40,0);
PRIMITIVE(313,83,0);
PRIMITIVE(58,78,0);
PRIMITIVE(314,79,0);
PRIMITIVE(315,66,0);
PRIMITIVE(316,88,0);
PRIMITIVE(317,24,0);
PRIMITIVE(318,25,0);
PRIMITIVE(319,68,0);
PRIMITIVE(320,32,0);
PRIMITIVE(321,33,0);
PRIMITIVE(322,34,0);
PRIMITIVE(323,35,0);
PRIMITIVE(324,36,0);
PRIMITIVE(189,37,0);
PRIMITIVE(208,38,0);
PRIMITIVE(325,39,0);
PRIMITIVE(326,89,0);
PRIMITIVE(47,42,0);
PRIMITIVE(327,43,0);
PRIMITIVE(328,44,0);
PRIMITIVE(329,15,0);
PRIMITIVE(330,49,0);
PRIMITIVE(331,52,0);
PRIMITIVE(332,53,0);
PRIMITIVE(333,62,0);
PRIMITIVE(334,60,0);
PRIMITIVE(335,61,0);
PRIMITIVE(32,63,0);
PRIMITIVE(336,64,0);
{310}PRIMITIVE(383,13,0);
PARLOC:=CURVAL;
PARTOKEN:=4096+PARLOC;
{343}PRIMITIVE(412,93,0);
PRIMITIVE(413,93,1);
PRIMITIVE(414,93,2);
PRIMITIVE(415,93,3);
PRIMITIVE(416,93,4);
{369}PRIMITIVE(443,67,0);
PRIMITIVE(444,67,1);
PRIMITIVE(445,67,2);
PRIMITIVE(446,75,17);
PRIMITIVE(447,65,0);
PRIMITIVE(448,65,1);
{374}PRIMITIVE(451,69,93);
PRIMITIVE(452,69,1);
{672}PRIMITIVE(355,4,128);
PRIMITIVE(357,5,129);
{915}PRIMITIVE(697,14,0);
PRIMITIVE(698,14,1);
{927}PRIMITIVE(708,26,4);
PRIMITIVE(709,26,0);
PRIMITIVE(710,26,1);
PRIMITIVE(711,26,2);
PRIMITIVE(712,26,3);
PRIMITIVE(713,27,4);
PRIMITIVE(714,27,0);
PRIMITIVE(715,27,1);
PRIMITIVE(716,27,2);
PRIMITIVE(717,27,3);
PRIMITIVE(193,28,5);
PRIMITIVE(196,29,0);
PRIMITIVE(197,30,98);
{940}PRIMITIVE(738,22,1);
PRIMITIVE(739,22,0);
PRIMITIVE(740,23,1);
PRIMITIVE(741,23,0);
PRIMITIVE(742,21,0);
PRIMITIVE(743,21,1);
PRIMITIVE(744,21,2);
PRIMITIVE(745,21,3);
PRIMITIVE(746,21,4);
PRIMITIVE(747,21,5);
PRIMITIVE(748,21,97);
PRIMITIVE(749,31,100);
PRIMITIVE(750,31,101);
PRIMITIVE(751,31,102);
{958}PRIMITIVE(765,41,1);
PRIMITIVE(766,41,0);
{984}PRIMITIVE(45,45,1);
PRIMITIVE(204,45,0);
{1012}PRIMITIVE(804,46,0);
PRIMITIVE(805,46,1);
{1026}PRIMITIVE(598,48,15);
PRIMITIVE(599,48,16);
PRIMITIVE(600,48,17);
PRIMITIVE(601,48,18);
PRIMITIVE(602,48,19);
PRIMITIVE(603,48,20);
PRIMITIVE(604,48,21);
PRIMITIVE(606,48,25);
PRIMITIVE(605,48,26);
{1038}PRIMITIVE(593,51,0);
PRIMITIVE(594,51,2);
PRIMITIVE(595,51,4);
PRIMITIVE(596,51,6);
{1045}PRIMITIVE(822,50,0);
PRIMITIVE(823,50,1);
PRIMITIVE(824,50,2);
PRIMITIVE(609,50,3);
PRIMITIVE(825,50,4);
PRIMITIVE(826,50,5);
{1054}PRIMITIVE(607,47,29);
PRIMITIVE(608,47,30);
{1073}PRIMITIVE(839,55,0);
PRIMITIVE(840,55,1);
PRIMITIVE(841,55,2);
PRIMITIVE(842,55,3);
PRIMITIVE(843,55,4);
PRIMITIVE(844,55,5);
PRIMITIVE(845,55,6);
PRIMITIVE(846,55,7);
PRIMITIVE(847,55,8);
PRIMITIVE(848,55,9);
{1090}PRIMITIVE(867,80,1);
PRIMITIVE(868,80,2);
PRIMITIVE(869,80,4);
PRIMITIVE(870,82,0);
PRIMITIVE(871,82,1);
PRIMITIVE(872,82,2);
PRIMITIVE(873,82,3);
{1105}PRIMITIVE(889,76,2943);
PRIMITIVE(890,76,3071);
PRIMITIVE(891,76,3199);
PRIMITIVE(892,76,3327);
PRIMITIVE(893,76,3455);
PRIMITIVE(894,76,3876);
PRIMITIVE(614,77,2894);
PRIMITIVE(615,77,2910);
PRIMITIVE(616,77,2926);
{1110}PRIMITIVE(902,84,0);
PRIMITIVE(903,84,1);
PRIMITIVE(904,84,2);
PRIMITIVE(905,85,0);
PRIMITIVE(906,85,1);
PRIMITIVE(907,85,2);
PRIMITIVE(908,86,0);
PRIMITIVE(909,86,1);
PRIMITIVE(910,86,2);
PRIMITIVE(911,87,0);
PRIMITIVE(912,87,1);
PRIMITIVE(913,87,2);
{1120}PRIMITIVE(925,90,0);
PRIMITIVE(926,90,1);
{1130}PRIMITIVE(935,91,0);
PRIMITIVE(936,91,1);
PRIMITIVE(937,91,2);
PRIMITIVE(938,91,3);
{1136}PRIMITIVE(939,58,0);
PRIMITIVE(940,58,1);
{1144}PRIMITIVE(946,54,3199);
PRIMITIVE(947,54,3327);
{1149}PRIMITIVE(948,20,0);
PRIMITIVE(949,20,1);
PRIMITIVE(950,20,2);
PRIMITIVE(951,20,3);
{1202}PRIMITIVE(989,59,0);
PRIMITIVE(990,59,1);
PRIMITIVE(991,59,2);
PRIMITIVE(992,59,3);;
NONEWCONTROL:=TRUE;
END;
{1196}{PROCEDURE DEBUGHELP;
LABEL 889,888,10;
VAR K,L,M,N:INTEGER;
BEGIN GOTO 889;
888:['*************breakpoint*************';
'***********for**debugging***********'];
889:WHILE TRUE DO BEGIN WRITE(TERMOUT,'#');
BREAK(TERMOUT);
READ(TERMIN,M);
IF M<0 THEN GOTO 10;
IF M=0 THEN GOTO 888;
READ(TERMIN,N);
CASE M OF[1197]1:PRINTMEMORYW(MEM[N]);
2:PRINTINT(MEM[N].HH.LH);
3:PRINTINT(MEM[N].HH.RH);
4:PRINTMEMORYW(EQTB[N]);
5:PRINTMEMORYW(FONTINFO[N]);
6:PRINTMEMORYW(SAVESTACK[N]);
7:SHOWBOX(N);
8:BEGIN BREADTHMAX:=1000;
DEPTHTHRESHO:=POOLSIZE-POOLPTR-10;
SHOWNODELIST(N);
END;
9:TOKENSHOW(N);
10:CHECKMEM(N>0);
11:SEARCHMEM(N);
12:BEGIN READ(TERMIN,L);
PRINTCMDCHR(N,L);
END;
13:FOR K:=1 TO N DO PRINT(XCHR[BUFFER[K]]);
14:BEGIN FONTINSHORTD:=0;
SHORTDISPLAY(N);
END;
OTHERS:WRITE(TERMOUT,'?')END;
END;
10:END;
}{1188}BEGIN 1:REWRITE(TERMOUT,'TTY:','/O');
IF READYALREADY=314159 THEN GOTO 2;
INITIALIZE;
{13}BAD:=0;
IF(HALFERRORLIN<30)OR(HALFERRORLIN>ERRORLINE-15)THEN BAD:=1;
IF MAXPRINTLINE<60 THEN BAD:=2;
IF DVIBUFSIZE MOD 8<>0 THEN BAD:=3;
IF(12000<100)OR(12100>MEMMAX)THEN BAD:=4;
IF 1777>2100 THEN BAD:=5;
{105}IF(0>0)OR(255<127)THEN BAD:=11;
IF(0>0)OR(65535<32767)THEN BAD:=12;
IF(0<0)OR(255>65535)THEN BAD:=13;
IF(0<0)OR(MEMMAX>=65535)THEN BAD:=14;
IF(0<0)OR(FONTMAX>255)THEN BAD:=15;
IF(SAVESIZE>65535)OR(MAXSTRINGS>65535)THEN BAD:=16;
IF(BUFSIZE>65535)THEN BAD:=17;
{269}IF 6456>65535 THEN BAD:=21;
{437}IF 22>FILENAMESIZE THEN BAD:=31;
{1119}IF 2*65535<12000 THEN BAD:=41;
IF BAD>0 THEN BEGIN WRITE(TERMOUT,
'Ouch---my internal constants have been clobbered!');
WRITE(TERMOUT,'---case ',BAD:0);
GOTO 9999;
END;
{1193}IF NOT INITSTRINGS THEN GOTO 9999;
INITPRIM;
{657}MAGICOFFSET:=STRSTART[625]-9*15;
GOTO 2;
{657}MAGICOFFSET:=STRSTART[625]-9*15;
2:FIXDATEANDTI;
{54}SELECTOR:=17;
TALLY:=0;
OFFSET:=0;
{58}WRITE(TERMOUT,'This is TeX, Version 0');
IF FORMATIDENT=0 THEN WRITELN(TERMOUT,' (no format preloaded)')ELSE
BEGIN PRINT(FORMATIDENT);
PRINTLN;
END;
{449}OUTPUTFILENA:=0;;
{1195}BEGIN{307}BEGIN INPUTPTR:=0;
INOPEN:=0;
PARAMPTR:=0;
SCANNERSTATU:=0;
FIRST:=0;
CURINPUT.STATEFIELD:=33;
CURINPUT.STARTFIELD:=0;
CURINPUT.INDEXFIELD:=0;
LINE:=0;
CURINPUT.NAMEFIELD:=0;
ALIGNSTATE:=1000000;
IF NOT INITTERMINAL THEN GOTO 9999;
END;
IF FORMATIDENT=0 THEN BEGIN IF NOT OPENFMTFILE THEN GOTO 9999;
IF NOT LOADFMTFILE THEN GOTO 9999;
WHILE(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(BUFFER[CURINPUT.LOCFIELD
]=32)DO CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
END;
BUFFER[CURINPUT.LIMITFIELD]:=13;
{71}IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17;
IF(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(EQTB[2943+BUFFER[CURINPUT.
LOCFIELD]].HH.RH<>0)THEN STARTINPUT;
END;
MAINCONTROL;
FINALCLEANUP;
9998:CLOSEFILESAN;
9999:END.